需要逻辑0或非0在 jsValue 函数中
再过二十天就考三级了,今天才开始看编程题。第一道做了两个小时,其中一个半小时在研究这个错误是什么意思,无果……要求写的是JSVALUE函数,第一次做题,我确实写得很累赘,...
再过二十天就考三级了,今天才开始看编程题。第一道做了两个小时,其中一个半小时在研究这个错误是什么意思,无果……
要求写的是JSVALUE函数,第一次做题,我确实写得很累赘,但好不容易写完TC提示这个函数的最后一步:
pjz1=he1/cnt;
pjz2=he2/(300-cnt);
有错误。这两行都有同一个错误:需要逻辑0或非0……
什么意思啊????怎么改????
#include<stdio.h>
int a[300], cnt=0;
int i;
int he1n,he2n;
double pjz1=0.0,pjz2=0.0;
jsValue()
{
int i=1,cnt=0,pjz1n=0,pjz2n=0;
int g,s,b,q;
int pjz1[300];
int pjz2[300];
int he1n,he2n;
g=a[i]%10;
s=a[i]%100-g;
b=a[i]%1000-g-s;
q=a[i]-(g+s+b);
s=s/10;
b=b/100;
q=q/1000;
for(i=1;i<300;i++)
if (q-b-s-g>0)
{cnt=cnt+1;
pjz1[pjz1n]=a[i];
pjz1n++;
}
else
{
pjz2[pjz2n]=a[i];
pjz2n++;
}
he1=pjz1[0];
for(he1n=0;he1n<pjz1n;he1n++)
he1=he1+pjz1[he1n];
he2=pjz2[0];
for(he2n=0;he2n<pjz2n;he2n++)
he2=he2+pjz2[he2n];
pjz1=he1/cnt;
pjz2=he2/(300-cnt);
}
main()
{
int i;
readDat();
jsValue();
writeDat();
printf("cnt=%d\n满足条件的平均值pjz1=%7.2lf\n不满足条件的平均值pjz2=%7.2lf\n",cnt,pjz1,pjz2);
}
readDat()
{
FILE *fp;
int i;
fp=fopen("in55.dat","r");
for(i=0;i<300;i++)
fscanf(fp,"%d,",&a[i]);
fclose(fp);
}
writeDat()
{
FILE *fp;
int i;
fp=fopen("out55.dat","w");
fprintf(fp,"%d\n%7.2lf\n%7.2lf\n",cnt ,pjz1,pjz2);
fclose(fp);
}
题目是这样的:
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
不好意思,漏了一行对he1和he2的定义没贴上:
double he1,he2; 展开
要求写的是JSVALUE函数,第一次做题,我确实写得很累赘,但好不容易写完TC提示这个函数的最后一步:
pjz1=he1/cnt;
pjz2=he2/(300-cnt);
有错误。这两行都有同一个错误:需要逻辑0或非0……
什么意思啊????怎么改????
#include<stdio.h>
int a[300], cnt=0;
int i;
int he1n,he2n;
double pjz1=0.0,pjz2=0.0;
jsValue()
{
int i=1,cnt=0,pjz1n=0,pjz2n=0;
int g,s,b,q;
int pjz1[300];
int pjz2[300];
int he1n,he2n;
g=a[i]%10;
s=a[i]%100-g;
b=a[i]%1000-g-s;
q=a[i]-(g+s+b);
s=s/10;
b=b/100;
q=q/1000;
for(i=1;i<300;i++)
if (q-b-s-g>0)
{cnt=cnt+1;
pjz1[pjz1n]=a[i];
pjz1n++;
}
else
{
pjz2[pjz2n]=a[i];
pjz2n++;
}
he1=pjz1[0];
for(he1n=0;he1n<pjz1n;he1n++)
he1=he1+pjz1[he1n];
he2=pjz2[0];
for(he2n=0;he2n<pjz2n;he2n++)
he2=he2+pjz2[he2n];
pjz1=he1/cnt;
pjz2=he2/(300-cnt);
}
main()
{
int i;
readDat();
jsValue();
writeDat();
printf("cnt=%d\n满足条件的平均值pjz1=%7.2lf\n不满足条件的平均值pjz2=%7.2lf\n",cnt,pjz1,pjz2);
}
readDat()
{
FILE *fp;
int i;
fp=fopen("in55.dat","r");
for(i=0;i<300;i++)
fscanf(fp,"%d,",&a[i]);
fclose(fp);
}
writeDat()
{
FILE *fp;
int i;
fp=fopen("out55.dat","w");
fprintf(fp,"%d\n%7.2lf\n%7.2lf\n",cnt ,pjz1,pjz2);
fclose(fp);
}
题目是这样的:
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
不好意思,漏了一行对he1和he2的定义没贴上:
double he1,he2; 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询