1、国家二级 C语言机试(操作题)模拟试卷 440及答案与解析 一、程序填空题 1 给定程序的主函数中,已给出由结构体构成的链表结点 a、 b、 c,各结点的数据域中均存入字符,函数 fun()的作用是:将 a、 b、 c三个结点 链接成一个单向链表,并输出链表结点中的数据。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio h typedef struct list char data; struct list * next; Q; voi
2、d fun ( Q *pa, Q*pb, Q*pc) pa 一 next= 【 1】 ; pb 一 next =pc; p =pa; while ( p ) /*found*/ printf (“ c“,【 2】 ) ; /*found*/ p=【 3】 ; printf (“n“) ; main () Qa,b,c; a data = E; b data = F; c data = G; c next =NULL; fun(&a, &b, &c); 二、程序修改题 2 给定程序 MODl1 C中,函数 fun()的功能是统计 s所指一维数组中 0的个数 (存在变量 zero中 )和 1的个数
3、 (存在变量 one中 ),并输出结果。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio h void fun(int*s, int n) /*found*/ int i, one: 0, zero; for(i=0 ; i n; i+) /*found*/ switch(Si); /*found*/ case 0: zero+; case 1: one+; printf(“one: d zero: dn“, one, zero); main() int a20=1, 1
4、, 1, 0, 1, 0, 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 2 0 void NONO(); void fun(char, * a, char, *s)
5、main() char s1N, *s2=“abcdefghijk“; fun(s1, s2); printf(“ sn“, s1); printf(“ sn“, 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“)j for(i=0; i 1 0; i+) fgets(s2, 2 55, fp); fun(s1, s2); fprin
6、tf(wf, “ s“, s1); fclose(fp); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 440答案与解析 一、程序填空题 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+
7、; break; 【试题解析】 (1)变量 zero用来统计数字 0的个数,应将其初始化为 0。 (2)语法错误, switch语句后不加分号。 (3)当数字为 0时,变量 zero加 1,此时应使用 break语句跳出 switch语句,进行下一次循环,否则会继续执行 case 1语句,使程序不能得出正确结果。 三、程序设计题 3 【正确答案】 void fun( char *a , char *s) a +; s +; 【试题解析】 要将 s所指的字符串存入 a所指的字符串中,程序要求不能使用系统提供的字符串函数,本题可以使用循环语句,依次取出 a所指字符串中的元素,将其存入 s所指的字符串中,最后为 s所指的字符串添加结束标识 0。