1、三级数据库技术-498 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.将文件 in.dat中的 200个整数读至数组 xx中。请编制 jsValue()函数,要求:求出数组 xx中的数值为奇数的个数 cnt1和数值为偶数的个数 cnt2以及数组 xx下标为偶数(包括下标为 0的元素)的元素值的算术平均值 pj。 结果 cnt1,cnt2,pj 输出到 out.dat中。 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 read_dat()和输出函数 writeDat()的内容。 #include stdio
2、.h #define N 200/定义宏变量 N, 其值等于 200 int cntl, cnt2, xxN;/定义全局变量 cnt1, cnt2, 以及数组 xxN float pj; /平均值 void writeDat(); void jsValue() /*read_dat(int xxN)函数将文件 in.dal中的 200个整数读至数组 xx中*/ void read_dat(int xxN) int i, j; FILE *fp; fp=fopen(“in.dat“, “r“); for(i=0; i20; i+) for(j=0; j10; j+) fscanf(fp, “%d
3、,“, /从文件 in.dat中读取一个整数存入数组元素 xxi*10+j中 printf(“%d“, xxi*10+j); printf(“n“); fclose(fp); /关闭文件 in.dat void main() read_dat(xx); jsValue(); printf(“nncnt1=%d, cnt2=%d, pj=%6.2fn“, cnt1, cnt2, pj); writeDat(); /*writeDat()函数将计算结果 cnt1, cnt2, pj输出到 out.dat中*/ void writeDat() FILE *fw; fw=fopen(“out.dat“
4、, “w“); fprintf(fw, “%dn%dn%6.2fn“, cnt1, cnt2, pj); /将 cnt1, cnt2, pj输出到 out.dat中 fclose(fw); (分数:100.00)_三级数据库技术-498 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.将文件 in.dat中的 200个整数读至数组 xx中。请编制 jsValue()函数,要求:求出数组 xx中的数值为奇数的个数 cnt1和数值为偶数的个数 cnt2以及数组 xx下标为偶数(包括下标为 0的元素)的元素值的算术平均值 pj。 结果 cnt
5、1,cnt2,pj 输出到 out.dat中。 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 read_dat()和输出函数 writeDat()的内容。 #include stdio.h #define N 200/定义宏变量 N, 其值等于 200 int cntl, cnt2, xxN;/定义全局变量 cnt1, cnt2, 以及数组 xxN float pj; /平均值 void writeDat(); void jsValue() /*read_dat(int xxN)函数将文件 in.dal中的 200个整数读至数组 xx中*/ void read_da
6、t(int xxN) int i, j; FILE *fp; fp=fopen(“in.dat“, “r“); for(i=0; i20; i+) for(j=0; j10; j+) fscanf(fp, “%d,“, /从文件 in.dat中读取一个整数存入数组元素 xxi*10+j中 printf(“%d“, xxi*10+j); printf(“n“); fclose(fp); /关闭文件 in.dat void main() read_dat(xx); jsValue(); printf(“nncnt1=%d, cnt2=%d, pj=%6.2fn“, cnt1, cnt2, pj);
7、 writeDat(); /*writeDat()函数将计算结果 cnt1, cnt2, pj输出到 out.dat中*/ void writeDat() FILE *fw; fw=fopen(“out.dat“, “w“); fprintf(fw, “%dn%dn%6.2fn“, cnt1, cnt2, pj); /将 cnt1, cnt2, pj输出到 out.dat中 fclose(fw); (分数:100.00)_正确答案:()解析:int i; cnt1=0; cnt2=0; pj=0; /*for循环语句计算数组 xx中的数值为奇数的个数 cnt1和数值为偶数的个数 cnt2以及数
8、组 xx下标为偶数的元素值的和*/ for(i=0; iN; i+) /循环变量 i从 0开始,每次递增 1,直到其值小于 N if(xxi %2) cnt1+; /如果 xxi的值为奇数,变量 cnt1加 1 else cnt2+; /否则,xxi的值为偶数,变量 cnt2加 1 if(i%2=0)pj+=xxi; /如果数组 xx下标 i为偶数,则把 xxi的值累加到变量 pj pj/=100.0; /变量 pj除以 100.0得到数组 xx下标 i为偶数的元素值的平均值 pj 解析 读入数值,奇数个数,偶数个数,数组下标为偶数的平均值。 首先定义循环变量 i,并对全局变量 cnt1、cnt2 和 pj赋初值 0。 在 for循环语句中,将数组 xx中的每个数组元素 xxi对 2求余数,如果余数非零,则说明 xxi是奇数,奇数的个数变量 cnt1加 1,否则,偶数的计数变量 cnt2加 1;接着将数组 xx下标 i对 2求余,如果余数等于 0,则把 xxi的值累加到变量 pj。 退出循环时,变量 pj的值除以 100.0就得到数组 xx下标 i为偶数的元素值的算术平均值 pj(因为数组中共有 200个数组,下标为奇偶数的元素各占一半,因此直接将累加变量 pj的值直接除 100即可得到这些数的平均值)。