1、国家二级 C语言机试(操作题)模拟试卷 389及答案与解析 一、程序填空题 1 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数 fun的功能是:把形参 x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include stdlib h 3 #define N 8 4 typedef struct list 5
2、int data; 6 struct list *next; 7 SLIST; 8 void fun(SLIST *h, int x) 9 SLIST *p, *q, *s; 10 s=(SLIST *)malloc(sizeof(SLIST); 11 *found* 12 s- data= _1_; 13 q=h; 14 p=h- next; 15 while(p!=NULL x p- data) 16 *found* 17 q=_2_; 18 p=p- next; 19 20 s- next=p; 21 *found* 22 q- next=_3_; 23 24 SLIST*creatli
3、St(int *a) 25 SLIST *h, *p, *q; int i; 26 h=p=(SLIST *)malloc(sizeof(SLIST); 27 for(i=0; i N; i+) 28 q=(SLIST *)malloc(sizeof(SLIST); 29 q- data=ai; p- next=q; p=q; 30 31 p- next=0; 32 return h; 33 34 void outlist(SLIST *h) 35 SLIST *p; 36 p=h- next; 37 if(p=NULL)printf( nThe list is NULL! n); 38 el
4、se 39 printf( nHead); 40 do printf(- d, p- data); p=p- next; while(p!=NULL); 41 printf(- End n); 42 43 44 main() 45 SLIST *head; int x; 46 IntaN=11, 12, 15, 18, 19, 22, 25, 29; 47 head=creatlist(a); 48 printf( nThe list before inserting: n); outlist(head); 49 printf( nEnter a number: ); scanf( d, x)
5、; 50 fun(head, x); 51 printf( nThe list after inserting: n); outlist(head); 52 二、程序修改题 2 给定程序 modi1 c的主函数中,将 a、 b、 c三个结点链成一个 单向链表,并给各结点的数据域赋值,函数 fun()的作用是:累加链表结点数据域中的数据作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 1 #include stdio h 2 typedef struct list 3 int data; 4 str
6、uct list *next; 5 LIST; 6 int fun(LIST *h) 7 LIST *p; 8 *found* 9 int t; 10 p=h; 11 *found* 12 while(*p) 13 14 *found* 15 t=t+p data; 16 p=(*p) next; 17 18 return t; 19 20 main() 21 LIST a, b, c, *h; 22 a data=34; b data=51; 23 c data=87; c next= 0; 24 h= a; a next= 17 printf(The top: s, d n, m num,
7、 m s); 18 NONO(); 19 20 NONO() 21 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 22 FILE *rf, *wf; 23 STU a N, m; 24 int i; 25 rf=fopen(in dat, r); 26 wf=fopen(out dat, w); 27 for(i=0 ; i 10; i+) fscanf(rf, s d, ai num, ai s); 28 fun(a, 6 *s=aj; 【试题解析】 该程序功能是求最高分数的学生。本题是关于求 解结构体中某些成员的最大值,首先将第一个值设定为最大值,并在循环中将其他所有值与该值进行比较,求得最大值。然后将最大值与所有值进行比较,求得所有的最大值。