1、国家二级 C 语言机试(操作题)模拟试卷 365(无答案)一、程序填空题1 给定程序中,函数 fun 的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参 n 所指的存储单元中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct list int data;struct list *next; SLIST;SLIST *creatlist (int *a) ;void outlist (SL
2、IST *) ;void fun (SLIST *h, int *n)SLIST *p;_1_=0;p=hnext;while (p)p=p_2_ ;main ()SLIST *head;int a N =12,87,45,32,91,16,20,48 , num;head=creatlist (a) ; outlist (head) ;fun ( _3_ , &num) ;printf (“nnumber=dn“ ,num) ;SLIST *creatlist (int a )SLIST *h,*p,*q; int i;h=p= (SLIST *) malloc (sizeof (SLIST
3、) ;q= (SLIST *) malloc (sizeof (SLIST) ;qdata=a i ; p next=q; p=q ;pnext=0;return h;void outlist (SLIST *h)SLIST *p;p=hnext;if (p=NULL) printf (“The list isNULL!n“);else printf(“nHead “) ;do printf ( “d“,pdata) ;p=pnext; while (p ! =NULL) ;printf (“Endn“) ;二、程序修改题2 给定程序 MODI1C 中函数 fun 的功能是:求出 s 所指字符
4、串中最后一次出现的 t 所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为 NULL。例如,当字符串中的内容为“abcdabfabcdx” ,t 中的内容为“ab“时,输出结果应是“abcdx”。当字符串中的内容为“abcdabfabcdx” ,t 中的内容为 “abd”时,则程序输出未找到信息“not be found!”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!#include #include char * fun (char *s,char *t)char *p ,*r,*
5、a;a = Null;while (*s) p = s; r = t;while (*r)else break;s+;return a ;main ()char s100,t100,*p;printf(“nPlease enter stringprintf (“YnPlease enter substringt :“) ; scanf (“ooS“ , t) fp = fun (s, t) fif (p) printf(“nThe resultis : sn“ ,p);else printf (“nNot found ! n“) ;三、程序设计题3 函数 fun 的功能是:将两个两位数的正整数
6、 a、 b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的十位和千位上b 数的十位和个位数依次放在 c 数的百位和个位上。例如,当 a=45,b=12 时,调用该函数后,c=5142。注意:部分源程序存在文件 PROG1C 中。数据文件 indat 中的数据不得修改。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#include void fun (int a, int b, long *c)main()int a, b; long c;void NONO ();printf(“Input a, b:
7、“);scanf(“d,d“, a, b);fun (a, b, &c);printf(“The result is:ldn“,c);NONO();void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *rf, *wf ;int i,a,b ; long c ;rf= fopen (“indat“ , “r“);wf= fopen (“outdat“,“w“);for(i =0 ; i 10 ; i+) fscanf (rf, “ d,d“ , a , b);fun (a, b, &c);fprintf (wf, “a= d,b= d,c= ldn“,a,b,c);fclose (rf);fclose (wf);