问答题
请编写程序,从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("ood",xx[i*10+j]);
}
printf("/n");
}
fclose(fp);
void main()
{
int i,j;
long k;
int cnt1,cnt2,xx[N];
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);
【正确答案】i=j=k=cnt1=cnt2=0;
pj=0.0;
for (i=0;i<N;i++)
{ /*循环以遍历整个数组xx */
if (xx[i]%2)
cnt1++; /*若当前数为奇数,则让cnt1增1 */
else
cnt2++; /*否则让计数值cnt2增1*/
if (i%2) /*若当前数下标为奇数*/
{
k +=xx[i]; /*将该数累加到k中*/
j++; /*计数值j增1*/
}
}
pj=(float)k/j; /*计算所有下标为奇数的数的平均值*/
【答案解析】