1、计算机三级数据库技术-118 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写程序,要求:将文件 IN.DAT中的 200个整数写入数组 xx中,求出数组 xx中奇数的个数 cnt1和偶数的个数 cnt2,以及数组 xx下标为奇数的元素值的算术平均值 pj(保留两位小数),将结果cnt1、cnt2 和 pj输出到 OUT.DAT中。 试题程序 #includestdlib.h #includestdio.h #define N 200 void read_dat(int xxN) int i,j; FILE*fp; fp=fopen(
2、“IN.DAT“,“r“); for(i=0;i20;i+) for(J=0;j10;j+) fscanf(fp,“%d,“, printf(“%d“,xxi*10+j); printf(“n“); fclose(fp); voidmain() int cnt1,cnt2,xxN; float pj; FILE*fw; system(“CLS“); fw=fopen(“OUT.DAT“,“w“); read_dat(xx); printf(“nncnt1=%d,cnt2=%d,pj= %6.2fn“,cnt1,cnt2,pj); fprintf(fw,“%dn%dn%6.2fn“,cnt1,
3、cnt2,pj); fclose(fw); (分数:100.00)_计算机三级数据库技术-118 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写程序,要求:将文件 IN.DAT中的 200个整数写入数组 xx中,求出数组 xx中奇数的个数 cnt1和偶数的个数 cnt2,以及数组 xx下标为奇数的元素值的算术平均值 pj(保留两位小数),将结果cnt1、cnt2 和 pj输出到 OUT.DAT中。 试题程序 #includestdlib.h #includestdio.h #define N 200 void read_dat(int
4、 xxN) int i,j; FILE*fp; fp=fopen(“IN.DAT“,“r“); for(i=0;i20;i+) for(J=0;j10;j+) fscanf(fp,“%d,“, printf(“%d“,xxi*10+j); printf(“n“); fclose(fp); voidmain() int cnt1,cnt2,xxN; float pj; FILE*fw; system(“CLS“); fw=fopen(“OUT.DAT“,“w“); read_dat(xx); printf(“nncnt1=%d,cnt2=%d,pj= %6.2fn“,cnt1,cnt2,pj);
5、 fprintf(fw,“%dn%dn%6.2fn“,cnt1, cnt2,pj); fclose(fw); (分数:100.00)_正确答案:()解析:void main() int cnt1,cnt2,xxN; float pj; FILE *fw; int i,k=0; long j=0; cnt1=0; cnt2=0; pj=0.0; system(“CLS“); fw=fopen(“out.dat“,“w“); read_dat(xx); for(i=0;iN;i+) if(xxi%2) cnt1+; /*求出数组 xx中奇数的个数 cnt1*/ else cnt2+; /*求出数组
6、 xx中偶数的个数 cnt2*/ if(i%2=1) j+=xxi; /*求数组 xx下标为奇数的元素值的总和*/ k+; pj=(float)(j*100/k)/100; /*求数组 xx下标为奇数的元素值的算术平均值 pj*/ printf(“nncnt1=%d,cnt2=%d,pj=%6.2fn“,cnt1,cnt2,pj); fprintf(fw,“%dn%dn%6.2fn“,cnt1,cnt2,pj); fclose(fw); 考点 本题考查对指定范围内数的筛选和计算。考查的知识点主要包括:if 条件判断结构,逻辑表达式,平均值计算方法。 此题属于数学类问题。分析题干,本题存在 2个关键点:关键点 1如何判断一个数是奇数还是偶数;关键点 2如何计算所有下标为奇数元素的平均值。 本题的解题思路为:使用循环控制逐个访问数组中的每个数据,通过 if else结构判断该数的奇偶性,并分别统计个数,同时累加所有下标为奇数元素的和值,最后由其计算出平均值。