问题 问答题

试题要求如图10.3所示。

部分源程序内容如下:

#include<stdio.h>

int a[300], cnt=0;

double pjz1=0.0,pjz2=0.0;

jsValue()

main()

int i;

readDat();

jsValue();

writeDat();

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

readDat()

FILE *fp;

int i;

fp=fopen("K:\\k06\\35010003\\in.dat", "r");

for(i=0; i<300; i++) fscanf(fp, "%d, ", &a[i]);

fclose(fp);

writeDat()

FILE *fp;

fp=fopen("K:\\k06\\35010003\\out.dat","w");

fprintf(fp,"%d\n%7.2lf\n%7.2lf\n", cnt, pjz1, pjz2);

fclose(fp);

答案

参考答案:

jsValue()

{

int i;

int c[4];

for(i=0; i<300; i++){

c[0]=a[i]%10;

c[1]=a[i]%100/10;

c[2]=a[i]%1000/100;

c[3]=a[i]/1000;

if(c[0]-c[3]-c[2]-c[1]>0){

cnt++;

pjz1=pjz1+a[i];

}

else pjz2=pjz2+a[i];

}

pjz1=pjz1/300;

pjz2=pjz2/300;

}

解析:

此题的关键就是求四位数的各个位上的数,程序中的c[0]~c[3]依次存放是的个位、十位、百位、千位上的数,这种求每个位上的数的方法读者要熟练掌握。求得各个位上的数以后再按要求就可以求得所需要的pjz1和pjz2了。

填空题
单项选择题