试题要求如图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了。