1、国家二级 C语言机试(操作题)模拟试卷 554及答案与解析 一、程序填空题 1 给定程序的主函数中,已给出由结构体构成的链表结点 a、 b、 c,各结点的数据域中均存入字符,函数 fun()的作用是:将 a、 b、 c三个结点链接成一个单向链表,并输出链表结点中的数据。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h typeclef struct list char data; struct list * next; Q; vo
2、id fun(Q*pa, Q*pb, Q*pc) Q*p; *found* pa一 next=【 1】 ; pb一 next=pc; p=pa; while(p) *found* printf(“ c“, 【 2】 ); *found* p=【 3】 ; printf(“ n“); main() Q a, b, c; a data=E; b data=F; c data=G; c next=NULL; fun(&a, &b, &c); 二、程序修改题 2 给定程序 MODI1 C中,函数 fun()的功能是统计 s所指一维数组中 0的个数 (存在变量 zero中 )和 1的个数 (存在变量 o
3、ne中 ),并输出结果。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行 ,也不得更改程序的结构。 试题程序: #include stdio h void fun(int *s, int n) *found* int i t one=0, zero; for(i=0; i n; i+) *found* switch(si); *found* case 0: zero+; case 1: one+; printf(“one: d zero: d n“, one, zero); main() int a20=1, 1, 1, 0, 1, 0
4、, 0, 0, 1, 0, 0, 1, 1 , 0, 0, 1, 0, 1, 0, 0,n=20; fun(a, n); 三、程序设计题 3 请编写函数 fun,其功能是将形参 s所指字符串放入形参 a所指的字符数组中,使 a中存放同样的字符串。说明:不得使用系统提供的字符串函数。 注意:部分源程序存在 PROG1 C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序: #include Stdio h #define N 20 VOid NONO(); void fun(char*a, char*s) main() char s1N
5、, *s2=“abcdefghijk“; fun(s1, s2); printf(“ s n“, s1); printf(“ s n“, s2); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i; char s12 5 6, s22 5 6; fp=fopen(“in dat“, “r“); wf=fopen(“out dat“, “W“); for(i=0; i 1 0; i+) fgets(s2, 255, fp); fun(S1, s2); fprintf(wf, “ s“, s1); f
6、close(fp); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 554答案与解析 一、程序填空题 1 【正确答案】 (1)pb (2)p一 data (3)p一 next 【试题解析】 填空 1:将三个结点连接起来,即将 pa的指针域指向 pb, pb的指针域指向 pc。 填空 2:输出链表结点中的数据,表示为 p一 data。 填空 3:指针后移,指向下一个结点,即 p=p一 next。 二、程序修改题 2 【正确答案】 (1)int i, one=0, zero=0; (2)switch(si) (3)case 0: zero+; break; 【试题解析】 (1)变
7、量 zero用来统计数字 0的个数,应将其初始化为 0。 (2)语法错误, switch语句后不加分号。 (3)当数字为 0时,变量 zero加 1,此时应使用 break语句跳出 switch语句,进行下一次循环,否则会继续执行 case 1语句,使程序不能得出正确结果。 三、程序设计题 3 【正确答案】 void fun(char * a, char*s) while(*s!= 0) *a=*s; a+; s+; *a= 0; 【试题解析】 要将 s所指的字符串存入 a所指的字符串中,程序要求不能使用系统提供的字符串函数,本题可以使用循环语句,依次取出 a所指字符串中的元素,将其存入 s所指的字符串中,最后为 s所指的字符串添加结束标识 0。