问题 问答题

已知数据文件IN.DAT中存有300个五位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出满足以下条件的数的个数cnt、所有满足此条件的数的平均值pjz1,以及不满足此条件的数的平均值pjz2,最后调用写函数把结果输出到 out.dat文件。
条件:将五位数的万位、百位、个位数字重组成一个三位数a,将五位数的千位、十位数字重组成一个两位数b,前一个数a能被后一个数b整除。
例如:24360满足条件(230能被46整除);38129不满足条件(319不能被82整除)。
部分源程序已给出。
程序中已定义数组:a[300],已定义变量:cnt、pjz1、pjz1。
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include <stdio.h>
int a[300],cnt=0;
double pjzl-0.0,pjz2=0.0;

jsValue()



main()

int i;
readDat();
jsValue();
writeDat();
printf ("cnt=%d\n 满足条件的平均值 pzj1=%7.21 f\n不满足条件的平均值
pjz2=%7.21f\n" ,cnt,pjz1,pjz2);

readDat ( )

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

FILE *fp;
int i;
fp=fopen(" out.dar" ," w" );
fprintf(fp," %d\n%7.21f\n%7.21f\n" ,cnt,pjz1,pjz2);
fclose(fp);

答案

参考答案:

jsValue()

{

int i,g,s,b,q,w,k=0,nA,nB;

for(i=O;i<C00;i++){

/*取出各位数字*/

g=a[i]%A0;

s=a[i]%A00/A0;

b=a[i]/A00%A0;

q=a[i]/A000%A0;

w=a[i]/lO000;

/*重组新数*/

nA=w*A00+b*A0+g;

nB=q*A0+s;

/*判断条件*/

if(nA%nB==0) {cet++;pjzA+-a[i];}

else {k++;pjzB+=a[i];}

}

/*计算平均值*/

pjzA/=cnt;

pjzB/=k;

}

选择题
单项选择题