问答题 请编写程序,从in.dat文件中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。结果cnt1、cnt2、pj输出到out.dat文件中。 注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。 #include <conio.h> #include <stdio.h> #define N 200 void read dat(int xx[N]) { int i,j; FILE *fp; fp=fopen("in.dat","r"); for(i=0;i<20;i++) { for(j=0;j<10;j++) { fscanf(fp,"%d,",&XX[i*10+j]); printf("%d",xx[i*10+j]); } printf("/n"); } fclose(fp); } void main() { int i; int cnt1,cnt2,xx[N]; long j=0; float pj; fw=fopen("out.dat","w"); read dat(xx); printf("/n/ncnt1=%d,cnt2=%d,pj=%6.2f/n",cnt1,cnt2,pj); fprintf(fw,"%d/n%d/n%6.2f/n",cnt1,cnt2,pj); fclose(fw); }
【正确答案】for (i=0,j=0,cnt1=0,cnt2=0;i<N;i++) { /*循环以遍历数组xx中的所有数*/ if (xx[i]%2) cnt1++; /*若当前数为奇数,则让计数值cnt1增1*/ else cnt2++; /*否则让计数值cnt2增1*/ if (i%2==0) j+=xx[i]; /*当前数下标为偶数,将之累加到j中*/ } pj=(float)j/(N/2); /*求下标为偶数的平均值*/
【答案解析】