1、国家三级(数据库技术)机试模拟试卷 91及答案与解析 一、程序设计题 1 请编制程序,要求:将文件 IN91 DAT中的 200个整数读入数组 xx中,求出数组 xx中奇数的个数 cnt1和偶数的个数 cnt2,以及数组 xx下标为偶数的元素值的算术平均值 pj(保留 2位小数 ),结果 cnt1, cnt2,由输出到 out91.dat中。 部分程序、读函数 read_dat(int xx200)及输出格式已给出。 试题程序: #include conio h #include stdio h #define N 200 void realdat(int xxN) int i: j; FIL
2、E*fp; fp: fopen(“IN91.DAT“, “r“); for(i=0; i 20; i+) for(j=0;j 10;j+) fscanf (fp, “%d, “, 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; clrscr(); fw=fopen(“out91.dat“,“w“); read_dat(xx); printf(“nncntl=%d, cnt2=%d,pj=%6.2fn“,cnt1
3、,cnt2,pj); fprintf(fw,“%dn%dn%6.2fn“,cntl,cnt2,pj); fclose(fw); 国家三级(数据库技术)机试模拟试卷 91答案与解析 一、程序设计题 1 【正确答案】 void main() int cnt1,cnt2,xxN; float pj; FILE *fw; int i,k=0; long j; clrscr(); fw=fopen(“out91.dat“,“w“); read_dat(xx); for(i=0,j=0,cnt1=0,cnt2=0;i N;i+) if (xxi%2) /*求出数组 xx中奇数的个数 cnt1*/ cnt1
4、+; else cnt2+; /*求出数组 xx中偶数的个数 cnt2*/ if (i%2=0) 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.2fkn“,cnt1,cnt2,pj); fclose(fw); 【试题解析】 本题考查的知识点如下: (1)运算符 “%” 的使用。 (2)强制类型转换和小数位数的保留。 一个数除以 2取余所得的数为 1,则它是奇数,否则是偶数,取余使用运算符“%” 。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以 100除以个数强制类型转换后再除以 100。为了保证和有效,我们定义一 个长整型变量来记录和。因为个数也为整型,运算符 “/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以 100的结果转换为浮点类型,这样就可以实现保留两位小数。使用循环对所有数据进行访问。