1、国家二级( C语言)机试模拟试卷 213及答案与解析 一、程序填空题( 30分) 1 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。函数fun的功能是将形参 a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。 例如:传给形参 a的数据中,学号、姓名、和三门课的成绩依次是:10001、 ”ZhangSan”、 95、 80、 88,修改后的数据应为: 10002、 ”LiSi”、 96、 81、89。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的
2、结构 ! #include #include struct student long sno; char name10; float score3; ; /*found*/ 【 1】 fun(struct student a) int i; a.sno = 10002; /*found*/ strcpy(【 2】 , “LiSi“); /*found*/ for (i=0; i #include #include #define N 10 typedef struct ss char num10; int s; STU; STU*fun(STU a, int m) (STU bN, *t; i
3、nt i, j, k; *found* t=(STU*)calioc(sizeof(STU), m) for(i=0; ibj s) j=i; *found* t(k)=b(j); bj s=0; return t; outresult(STU a, FILE*pf) int i; for(i=0; i10) printf(” nGive the number of the students who have better scOre: ”); scanf(” d”, ”,其中 t是student结构体变量,因此 fun函数的返回值为 student结构体,故第一空处应为“struct stu
4、dent”。 第二空: “strcpy(_2_, “LiSi“);”是修改结构体变量 a的 name成员值,故第二空为 “a.name”。 第三空: “for (i=0; i3; i+) _3_+=1;”是修改 a的成员变量 score数组元素值,因此第三空为 “a.scorei”。 二、程序修改题( 30分) 2 【正确答案】 (1)t=(STU*)calloc(sizeof(STU), m); (2)tk=bj; 【试题解析】 (1)题干中要求结构体 STU类型的 m个学生放在动态分配的 连续存储区中, “t=STU*)callot(sizeof(STU), m)“语句没有使用分号 “; “结束,因此需要在语句结尾处加分号。 calloc函数是 C语言的动态分配函数。分配存储空间。 (2)第二个标识下是将 b数组拷贝到 t数组,在 C语言中,数组元素的访问使用中括号 “而不是元括弧 “()“,因此第二标识下应改成 “tk=bj; “ 三、程序设计题( 40分) 3 【正确答案】 int i; for(i=0; im; i+)fun1(w); 【试题解析】 函数 fun1的功能是 将字符串中字符循环左移一个位置, m次调用该函数循环左移 m个字符,因此在 fun函数中循环调用 fun1函数就可以完成 m个字符的移动。