1、国家二级 C语言机试(操作题)模拟试卷 353及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参 y所指数组中,在主函数中输出。 例如,有 10个正数:46 30 32 40 6 17 45 1548 26,平均值为:30500000 主函数中输出:46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。 不得增行
2、或删行,也不得更改程序的结构! #include #include #define N 10 double fun (double x ,double *y) int i,j; double av; /*found*/ av=_1_ ; for (i=0; iav) y _3_ = x i ; return av; main ( ) int i; double xNlryNl; for (i=0; i=0; 1+) printf printf (“/n“) ; (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:根据整型形参 m,
3、计算如下公式的值。 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.己知学生的记录由学号和学习成绩构成,N 名学生的数据已存入 a结构体数组中。请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 注意:部分源程序存在文件 PROG1C 文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include #define N 10 typedef struct ss char num10; int s; STU; void fun(STU a,STU *
4、s) main () “A03“,66, “A04“,87, “A05“,77, “A06“,90 , “A07“,79, “A08“,61, int i;void NONO (); printf(“* The original data for (i=0; 1 N; i+)printf(“No = S Mark =d/n“, ai num,ais);printf (“* THE RESULT */n“) ; printf (“The lowest : s,d/n“, mnum, ms) ; NONO () ; voicl NONO () /*本函数用于打开文件,输入数据,调用函数,输出数据,
5、关闭文件。*/ FILE *rf,*wf ; STU aN,m ; int i ; rf = fopen (“indat“,“r“) ; wf = fopen ( “outdat“,“w“) ; for (i = 0 ; i 10; 1+) fscanf (rf, “s d“, ai num, &a i s) ; fprintf (wf, “The lowest : s,d/n“,mnum,ms); fclose (rf) ; fclose (wf) ; (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 353答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1
6、,分数:2.00)1.给定程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参 y所指数组中,在主函数中输出。 例如,有 10个正数:46 30 32 40 6 17 45 1548 26,平均值为:30500000 主函数中输出:46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。 不得增行或删行,也不得更改程序的结构! #include #include #define N 10 double fun (do
7、uble x ,double *y) int i,j; double av; /*found*/ av=_1_ ; for (i=0; iav) y _3_ = x i ; return av; main ( ) int i; double xNlryNl; for (i=0; i=0; 1+) printf printf (“/n“) ; (分数:2.00)_正确答案:(正确答案:(1)0 (2)xi/N (3)j+)解析:解析:函数 fun的功能是计算形参 x所指数组中 N个数的平均值,同时利用传址参数传回平均值。 第一空:“return av,”可知变量 av保存了平均值,故第一空处 a
8、v初始化应为 0,即第一空处应填”0”。第二空:“for(i=0;iav) y_3_=xil; ,是将 xi保存在 y所指的数组中,i 是循环变量,j 初始化为 0,故 y的计数变量为 j,故第三空处应为“j+”。二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:根据整型形参 m,计算如下公式的值。 (分数:2.00)_正确答案:(正确答案:(1) double fun(intm) (2) for (i=100; i=m; i+=100)解析:解析:函数为累计相加,计算公式的值。 (1)第一个标识下的 fun函数的定义,根据题干中给出的公式中的分数
9、部分,可知应该具有 double类型返回值。所以应将“fun(int m)”改为“double fun(int m)”。 (2)第二个标识下的 for循环过程是实现对公式的求解,C 语句中 for循环中的多个循环条件表达式是以分号为分隔符,所以第二个标识下“for(i=100,i=m,i+=100)”改为“for(i=100; i=m; i+=100)”。三、程序设计题(总题数:1,分数:2.00)3.己知学生的记录由学号和学习成绩构成,N 名学生的数据已存入 a结构体数组中。请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 注意:部分源程序
10、存在文件 PROG1C 文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include #define N 10 typedef struct ss char num10; int s; STU; void fun(STU a,STU *s) main () “A03“,66, “A04“,87, “A05“,77, “A06“,90 , “A07“,79, “A08“,61, int i;void NONO (); printf(“* The original data for (i=0; 1 N; i+)pri
11、ntf(“No = S Mark =d/n“, ai num,ais);printf (“* THE RESULT */n“) ; printf (“The lowest : s,d/n“, mnum, ms) ; NONO () ; voicl NONO () /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *rf,*wf ; STU aN,m ; int i ; rf = fopen (“indat“,“r“) ; wf = fopen ( “outdat“,“w“) ; for (i = 0 ; i 10; 1+) fscanf (rf, “s d“, ai num, &a i s) ; fprintf (wf, “The lowest : s,d/n“,mnum,ms); fclose (rf) ; fclose (wf) ; (分数:2.00)_正确答案:(正确答案:1 int i, min=a0 s, j=0; 2 for(i=1; ia i s) /* 如果最低分 min仍大于当前分* / 4 j=i;/* 记住位置* / 5 min=a i s;/* 把当前分赋值给 min* / 6 7 * s=aj;)解析:解析:(1)首先指定第一个成绩为最低分数。 (2)再使用一个 for循环把所有的成绩进行比较,找出最低的分数来。