1、国家二级 C语言机试(操作题)模拟试卷 440及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序的主函数中,已给出由结构体构成的链表结点 a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:将 a、b、c 三个结点 链接成一个单向链表,并输出链表结点中的数据。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANKlC 中。不得增行或删行,也不得更改程序的结构! 试题程序: #include stdioh typedef struct list char data;
2、struct list * next; Q; void 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; adata = E; bdata = F; cdata = G; cnext =NULL; fun(&a,&b,&c); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODl1C 中,函数 f
3、un()的功能是统计 s所指一维数组中 0的个数(存在变量 zero中)和 1的个数(存在变量 one中),并输出结果。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include stdioh 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:d/n“,one
4、,zero);main()int a20=1,1,1,0,1,0,0,0,1,0,0,1 ,1,0 ,0,1,0 ,1,00,n=20; fun(a,n);(分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是将形参 s所指字符串放入形参 a所指的字符数组中,使 a中存放同样的字符串。说明:不得使用系统提供的字符串函数。 注意:部分源程序存在 PROG1C 中,请勿改动主函数main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序:#include stdioh #define N 2 0void NONO();voi
5、d fun(char,* a,char,*s)main()char s1N,*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(“indat“,“r“); wf=fopen(“outdat“,“w“)j for(i=0;i 1 0;i+) fgets(s2,2 55,fp); fun(s1,s2); fp
6、rintf(wf,“s“,s1); fclose(fp); fclose(wf);(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 440答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序的主函数中,已给出由结构体构成的链表结点 a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:将 a、b、c 三个结点 链接成一个单向链表,并输出链表结点中的数据。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANKlC 中。不得增行或删行,也不得更改程序的结构! 试题程
7、序: #include stdioh typedef struct list char data; struct list * next; Q; void 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; adata = E; bdata = F; cdata = G; cnext =NULL; fun(&a,&b,&c); (分
8、数:2.00)_正确答案:(正确答案:(1)pb (2)p 一data (3)p 一next)解析:解析:填空 1:将三个结点连接起来,即将 pa的指针域指向 pb,pb 的指针域指向 pc。 填空 2:输出链表结点中的数据,表示为 p一data。 填空 3:指针后移,指向下一个结点,即 p=p一next。二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODl1C 中,函数 fun()的功能是统计 s所指一维数组中 0的个数(存在变量 zero中)和 1的个数(存在变量 one中),并输出结果。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函
9、数,不得增行或删行,也不得更改程序的结构。 试题程序:#include stdioh 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:d/n“,one,zero);main()int a20=1,1,1,0,1,0,0,0,1,0,0,1 ,1,0 ,0,1,0 ,1,00,n=20; fun(a,n);(分数:2.00)_正确答案:(正确答案:(1)in
10、t i,one =0, zero =0, (2)switch( si) (3)case 0:zero+;break;)解析:解析:(1)变量 zero用来统计数字 0的个数,应将其初始化为 0。 (2)语法错误,switch 语句后不加分号。 (3)当数字为 0时,变量 zero加 1,此时应使用 break语句跳出 switch语句,进行下一次循环,否则会继续执行 case 1语句,使程序不能得出正确结果。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是将形参 s所指字符串放入形参 a所指的字符数组中,使 a中存放同样的字符串。说明:不得使用系统提供的字符串函数。
11、 注意:部分源程序存在 PROG1C 中,请勿改动主函数main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序:#include stdioh #define N 2 0void NONO();void fun(char,* a,char,*s)main()char s1N,*s2=“abcdefghijk“; fun(s1,s2); printf(“s/n“,s1); printf(“s/n“,s2); NONO();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE,* fp,*wf; int i; ch
12、ar s12 5 6,s22 5 6; fp=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“)j for(i=0;i 1 0;i+) fgets(s2,2 55,fp); fun(s1,s2); fprintf(wf,“s“,s1); fclose(fp); fclose(wf);(分数:2.00)_正确答案:(正确答案:void fun( char *a , char *s) a +; s +; )解析:解析:要将 s所指的字符串存入 a所指的字符串中,程序要求不能使用系统提供的字符串函数,本题可以使用循环语句,依次取出 a所指字符串中的元素,将其存入 s所指的字符串中,最后为 s所指的字符串添加结束标识/0。