1、国家二级 C 语言机试(操作题)模拟试卷 367(无答案)一、程序填空题1 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数 fun 的功能是:删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct list int data;struct list *next; SLIST;void fun (SLIST *h)SLIST
2、 *p,*q;p=hnext ;if (p ! =NULL) q=p 一next;while (q ! =NULL) if (pdata=qdata) pnext=qnext;/*found*/ free (_1_ ) ;/*found*/ q=p_2_ ; elsep=q;/*found*/ q=q _3_ ;SLIST *creatlist (int *a)SLIST *h,*p,*q; int i;h=p= (SLIST *) malloc (sizeof (SLIST) ; q=(SLIST *) malloc (sizeof (SLIST) ;qdata=a i ; p next=q
3、; p=q ;pnext=0 ;return h;void outlist (SLIST *h)SLIST *p;p=hnext;if (p=NULL) printf(“nThe listis NULL ! n“) ;else printf (“nHead“) ;clo printf (“d“ ,pdata) ;p=pnext; while (p ! =NULL) ;printf (“Endn“) ;main ()SLIST *head; int a INl=l,2,2,3,4,4,4,5 ;head=creatlist (a) ;printf(“nThe list before deleti
4、ng:n“) ; outlist (head) ;fun (head) ;printf(“nThe list after deleting:n“) ; outlist (head) ;二、程序修改题2 给定程序 MODI1C 中函数 fun 的功能是:用选择法对数组中的 n 个元素按从小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动 mam 函数,不得增行和删行,也不得更改程序的结构!#include #define N 20void fun(int a,int n) int i,j,t,p;for (j = 0 ;j #define M 100void fun
5、(int m int *a , int *n)main()int aa M, n k;void NONO ();fun (50, aa, &n);for (k= 0; kn ; k+)if(k+1) 0020=0) printf(“n“);else printf(“4d“, aa k) ;printf(“n“);NONO();void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *fp,*wf ;int i, n, j, k, aaM,sum ;fp=fopen (“indat“,“r“);wf=fopen(“outdat“,“w“);for(i= 0 ; i 10 ; i+) fscanf( fpf “d,“,&j);fun (j, aa, &n);sum =0 ;for(k=0 ; kn ; k+) sum+=aa k ;fprintf (wf, “dn“, sum);fclose( fp);fclose (wf);