1、国家二级 C语言机试(操作题)模拟试卷 345及答案与解析 一、程序填空题 1 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。函数fun的功能是对形参 b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。 例如: b所指变量 t中的学号、姓名、和三门课的成绩依次是: 10002、ZhangQi、 93、 85、 87,修改后输出 t中的数据应为: 10004、 LiJie、 93、 85、87。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果 。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结
2、构 ! 1 #include stdio h 2 #include string h 3 struct student 4 long sno; 5 char name10; 6 float score3; 7 ; 8 void fun(struct student *b) 9 10 *found* 11 b_1_=10004; 12 *found* 13 strcpy(b_2_, LiJie); 14 15 main() 16 struct student t=10002, ZhangQi, 93, 85, 87; 17 int i; 18 printf( n nThe original da
3、ta: n); 19 printf( nNo: id Name: s nScores: , t sno, t name); 20 for(i=0; i 3; i+)printf( 6 2f, t scorei); 21 printf( n); 22 *found* 23 fun( _3_); 24 printf( nThe data after modified: n); 25 printf( nNo: id Name: s nScores: , t sno, t name); 26 for(i=0; i 3; i+) printf( 6 2f, t scorei); 27 printf( n
4、); 28 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:计算并输出 high以内最大的 10个素数之和。 high的值由主函数传给 fun函数。 若 high的值为: 100,则函数的值为: 732。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include math h 3 int fun(int high) 4 int sum=0, n=0, j, yes; 5 *found* 6 while(high =2) i+) 23 fprintf(out
5、, 4d n, hi s); 24 fclose(out); 25 国家二级 C语言机试(操作题)模拟试卷 345答案与解析 一、程序填空题 1 【正确答案】 (1)- sno (2)- name(3) t 【试题解析】 函数 fun的功能是对形参 b所指结构体变量中的数据进行修改。 第一空: “b _1_=10004; ”等号右边是整型值,故这里是修改结构体成员 sno的值, b是结构体指针,访问结构体数据成员时使用 “- ”运算符,因此第一空为“b- sno”。 第二空: “strcpy(b_2_, LiJie); ”, strcpy是字符串拷贝函数,因此这里是修改结构体的 name成员值
6、,故第二空处为 “b- name”。 第三空: fun函数的定义形式是: void fun(struct student *b),可知 fun的参数是指针,因此主函数内调用 fun函数时传入的参数是结构体 t的地址,故第 三空处为 “ break; 【试题解析】 函数的功能是计算并输出 high以内最大的 10个素数之和。 (1)C语言中左右括弧必须成对出现,在第一个标识下 “while(high =2)&(n10)”中,显然缺少一个右括弧,应改为 “while(2 =high)&(n 10)”。 (2)在判断素数的循环过程中,只要被判断的数能被某数整除就不是素数,就会跳出判断循环,在 C语言
7、中使用 break语句跳出循环,并且 C语言中的语句使用分号为结尾。所以 “break”应改为 “break; ”。 三、程序设计题 3 【正确答案】 1 int i, max=a0 s, n=0; 2 for(i=1; i N; i+) 3 if(max ai s)max=ai s; *找出最高成绩 * 4 for(i=0; i N; i+) 5 if(max=ai s)bn+=ai; *找相等的最高成绩并存入数组 b中 * 6 return n; *返回符合条件的人数 * 【试题解析】 程序功能是把分数最高的学生数据放在 h所指的数组中 。 (1)要把最高分数的学生数据放在数组中,首先求出最高分数,再使用一个 for循环把所有的成绩进行比较,找出最高的分数来。 (2)找出所有与最高分数相等的学生,并将最高分数的人数累加。