问题 问答题

已知数据文件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。
注意:部分源程序已经给出。
程序中已定义数组:a[300];已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include<stdio.h>
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;
void jsValue()


void ReadDat()

FILE *fp;
int i;
fp=fopen("in.dat","r");
for(i=0; i<300; i++)
fscanf(fp,"%d,",&a[i]);
fclose(fp);

void writeDat()

FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%7.2f\n%7.2f\n",cnt,pjz1,pjz2);
fclose(fp);

main()

ReadDat();
jsValue();
writeDat();
printf("cnt=%d\n满足条件的平均值pzj1=%7.2f\n不满足条件的平均值pzj2=%7.2f\n",cnt,pjz1,pjz2);

答案

参考答案:

void jsValue ()

{

int i,thou,hun,ten,data,n=0;

for(i=0;i(C00;i++) /*循环以遍历数组a中的所有C00个四位数*/

{

thou=a[i]/A000; /*取当前数的千位数字*/

hun=a[i]%A000/A00; /*取当前数的百位数字*/

ten=a[i]%A00/A0; /*取当前数的卜位数字*/

data=a[i]%A0; /*取当前数的个位数字*/

if(data-thou-hun-ten>0)

{ /*如果个位减去其他位的和还大于0的话*/

cnt++; /*让计数值cnt增A*/

pjzl+=a[i]; /*将此数累加到pjzl中*/

}

else

{ /*否则的话,让计数值n增A,将此数累加到pjzB中*/

n++;

pjzB+=a[i];

}

}

pjzA/=cnt; /*计算满足条件的数的平均值*/

pjzB/=n; /*计算不满足条件的数的平均值*/

}

选择题
单项选择题 A3/A4型题