1、国家二级(C 语言)机试-试卷 43 及答案解析(总分:12.00,做题时间:90 分钟)一、程序填空题(总题数:2,分数:4.00)1.程序填空题()(分数:2.00)_2. (分数:2.00)_二、程序修改题(总题数:2,分数:4.00)3.程序修改题()(分数:2.00)_4.给定程序 MODIIC 中函数 fun 的功能是:逐个比较 P、q 所指两个字符串对应位置中的字符,把 ASCII值大或相等的字符依次存放到 c 所指数组中,形成一个新的字符串。 例如,若主函数中 a 字符串为:aBCDeFgH,主函数中 b 字符串为:ABcd,则 c 中的字符串应为:aBcdeFgH。 请改正程
2、序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 #include #include void fun(char *p ,char *q, char *c) /*found*/ int k=1; /*found*/ while(*p|*q) if(*p_三、程序设计题(总题数:2,分数:4.00)5.程序设计题()(分数:2.00)_6.请编写一个函数 fun,它的功能是:计算 n 门课程的平均分,计算结果作为函数值返回。 例如:若有5 门课程的成绩是:905,72,80,615,55 则函数的值为:7180。 注意:部分源程序存在文件P
3、ROGlC 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include float fun (float *a , int n) main() float score30=90.5, 72, 80, 61.5, 55, aver; void NONO (); aver = fun(score, 5); printf(“/nAverage score is: %5.2f/n“, aver); NONO (); void NONO () /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *
4、wf ; int i, j ; float aver, score5 ; fp = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i 10 ; i+) for(j = 0 ; j 5 ; j+) fscanf(fp,“%f,“, aver = fun(score, 5); fprintf(wf, “%5.2f/n“, aver); fclose(fp); fclose(wf); (分数:2.00)_国家二级(C 语言)机试-试卷 43 答案解析(总分:12.00,做题时间:90 分钟)一、程序填空题(总题数:2,分数:4
5、.00)1.程序填空题()(分数:2.00)_解析:2. (分数:2.00)_正确答案:(正确答案:tN i=0 s)解析:解析:第一空:在主函数中 fun 函数的调用形式是“fun(t,N);”,t 是二维数组名,故 fun 函数的第一个参数为指针,因此第一空处应为“tN”。 第二空:fun 函数的第二个参数 n 指明了矩阵的大小为 n,对角线元素与反向对角线元素有 n 个,故循环有 n 次,因此变量 i 从 0 开始,到 n-1 结束,因此第一空处应为“i=0;i二、程序修改题(总题数:2,分数:4.00)3.程序修改题()(分数:2.00)_解析:4.给定程序 MODIIC 中函数 fu
6、n 的功能是:逐个比较 P、q 所指两个字符串对应位置中的字符,把 ASCII值大或相等的字符依次存放到 c 所指数组中,形成一个新的字符串。 例如,若主函数中 a 字符串为:aBCDeFgH,主函数中 b 字符串为:ABcd,则 c 中的字符串应为:aBcdeFgH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 #include #include void fun(char *p ,char *q, char *c) /*found*/ int k=1; /*found*/ while(*p|*q) if(*p_正确答案:
7、(正确答案:int k=0; aBCDeFgH)解析:解析:(1)第一个标识下面的“int k=1;”在题目中要求将字符放在数组 c,如果数组中有 n 个元素,应该从 c0到 cn-1。所以,应将 k 的初始化定义改为从 0 开始,即“int k=0;”。 (2)第二个标识下面的判断条件,是根据题目要求逐个比较两个数组对应字符的 ASCII 值的大小,所以判断条件应该是直到两个字符数组所有元素比较完毕,而不是数组对应元素不相等。 其中,该题主要考查变量的初始化,逻辑关系。三、程序设计题(总题数:2,分数:4.00)5.程序设计题()(分数:2.00)_解析:6.请编写一个函数 fun,它的功能
8、是:计算 n 门课程的平均分,计算结果作为函数值返回。 例如:若有5 门课程的成绩是:905,72,80,615,55 则函数的值为:7180。 注意:部分源程序存在文件PROGlC 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include float fun (float *a , int n) main() float score30=90.5, 72, 80, 61.5, 55, aver; void NONO (); aver = fun(score, 5); printf(“/nAverage score is: %
9、5.2f/n“, aver); NONO (); void NONO () /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, j ; float aver, score5 ; fp = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i 10 ; i+) for(j = 0 ; j 5 ; j+) fscanf(fp,“%f,“, aver = fun(score, 5); fprintf(wf, “%5.2f/n“, aver); fclose(fp); fclose(wf); (分数:2.00)_正确答案:(正确答案: int i; float ave=0.0; for(i=0; i解析:解析:(1)在函数中首先定义平均分的变量,并将其初始化值置为 0。 (2)然后在 for 循环中,求得所有成绩的总分,并在总分的基础上求得平均分。