1、三级信息管理技术机试-237 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,要求:将文件 IN97.DAT 中的 200 个整数读入数组 xx 中,求出数组 xx 中奇数的个数 cnt1和偶数的个数 cnt2,以及数组 xx 下标为偶数的元素值的算术平均值 pj(保留 2 位小数),将结果cnt1、cnt2、pj 输出到文件 out97.dat 中。注意:部分程序、读函数 read_dat(int xx200)及输出格式已给出。试题程序:#include stdlib.h#include stdio.h#define N 20
2、0void read_dat(int xxN)int i,j;FILE * fp;fp=fopen(“IN97.DAT“,“r“);for(i=0;i20;i + +)for(j=0;j10;j + +)fscanf(fp,“% d,“,&xxi*10+j);printf(“% d“,xxi*10+j);printf(“/n“);fclose(fp);void main()int cnt1,cnt2,xxN;float pj;FILE * fw;int i,k=0;long j;system(“CLS“);fw=fopen(“out97.dat“,“w“);read_dat(xx);print
3、f(“/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);(分数:100.00)_三级信息管理技术机试-237 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,要求:将文件 IN97.DAT 中的 200 个整数读入数组 xx 中,求出数组 xx 中奇数的个数 cnt1和偶数的个数 cnt2,以及数组 xx 下标为偶数的元素值的算术平均值 pj(保留 2 位小数),将结果c
4、nt1、cnt2、pj 输出到文件 out97.dat 中。注意:部分程序、读函数 read_dat(int xx200)及输出格式已给出。试题程序:#include stdlib.h#include stdio.h#define N 200void read_dat(int xxN)int i,j;FILE * fp;fp=fopen(“IN97.DAT“,“r“);for(i=0;i20;i + +)for(j=0;j10;j + +)fscanf(fp,“% d,“,&xxi*10+j);printf(“% d“,xxi*10+j);printf(“/n“);fclose(fp);voi
5、d main()int cnt1,cnt2,xxN;float pj;FILE * fw;int i,k=0;long j;system(“CLS“);fw=fopen(“out97.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);(分数:100.00)_正确答案:(void main()int cnt1,cnt2,xxN;float pj;FILE * fw;int i
6、,k=0;long j;clrscr();fw=fopen(“out97.dat“,“w“);read_dat(xx);for(i=0,j=0,cnt1=0,cnt2=0;iN;i+) /*初始化计数器变量,依次取数组中的数进行统计*/if(xxi% 2!=0) /*如果是奇数*/cntl + +; /*统计数组 xx 中奇数的个数 cnt1*/else /*如果是偶数*/cnt2 + +; /*统计偶数的个数 cnt2*/if(i%2=0) /*如果下标是偶数*/j+=xxi; /*求数组 xx 中下标为偶数的元素值的总和*/k+; /*统计下标为偶数的元素的个数,以进一步求平均值*/pj=
7、(float)(j*100/k)/100; /*求数组 xx 下标为偶数的元素值的算术平均值 pj*/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 循环依次取得数组中的数;然后利用 if 判断语句区分奇、偶数,分别统计个数,并且对下标为偶数的元素求和。最后再求出下标为偶数的的元素值的算术平均值。本题要求对平均值的计算结果保留两位小数。因为运算符“/”在这里的含义是整除,而我们要保留小数、所以要使用强制类型转换将结果转换为浮点型,这样就可以实现保留两位小数的目的。