1、国家二级 C 语言机试(操作题)模拟试卷 363(无答案)一、程序填空题1 给定程序中,函数 fun 的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#include #include #define N 6typedef struct node int data;struct node *next; N
2、ODE;void fun (NODE *h)NODE *p,*q; int t;while (p) q=_2_;while (q) /*found*/ if (pdata _3_ qdata) t pdata; p data = qdata; q=data = t; q = qnext;p= pnext;NODE *creatlist (int a )NODE *h,*p,*q; int i;h= (NODE *) malloc (sizeof (NODE) ;hnext = NULL; q= (NODE *) malloc (sizeof (NODE) ;qdata=a i ;qnext =
3、 NULL;if (hnext = NULL) hnext =p = q;else pnext = q; p = q; return h;void outlist (NODE *h)NODE *p;p = hnext;if (p=NULL) printf(“The list iselse printf (“nHead “) ;do printf(“d“,pdata) ; p=pnext; while (p ! =NULL) ;printf (“Endn“) ;main ()NODE *head;int aN= 0,10,4,2,8f 6 ;head=creatlist (a) ;printf
4、(“nThe original list:n“) ;outlist (head) ;fun (head) ;printf (“nThe list after sorting:outlist (head) ;二、程序修改题2 给定程序 MODI1C 是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数 fun 的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正函数 fun 中指定部位的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!#include #include typedef struct a
5、a int data;struct aa *next; NODE;int fun (NODE *h) int max=1;NODE *p;p=h ;while (p) if(pdatamax)max=pdata;p=hnext ;return max;outresult(int s,FILE *pf) fprintf(pf, “nThe max inNODE *creatlink(int n int m)int i;h=p= (NODE *) malloc (sizeof (NODE) ;hdata=9999;for(i=l; idata=rand () m; snext=p next;pne
6、xt=s; p=p next;pnext=NULL;return h;outlink(NODE *h,FILE *pf)NODE *p;p=hnext;fprintf (pf,“nTHE LIST:nn HEAD “) ;while (p) fprintf (pf,“d “,pdata) ;p=pnext; fprintf (pf,“n“) ;main ()NODE *head; int m;head=creatlink (12, 100) ;outlink (head , stdout) ;m=fun (head) ;printf(“nTHE RESULT :n“);outresult (m
7、, stdout) ;三、程序设计题3 请编写函数 fun,函数的功能是:将 M 行 N 列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参 n 所指的存储单元中。例如,二维数组中的数据为:33 33 33 3344 44 44 4455 55 55 55则一维数组中的内容应是:33 33 33 33 44 44 44 44 55 55 55 55。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 mam 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#include void fun (int (*s) 10, int *b
8、, int*n,int mm,int nn)main () int w10 10= 33,33,33,33 ,44,44,44,44,55 ,55, 55,55 i,j ;int a100=0,n=0;void NONO ();printf (“The matrix:n“) ;for(i=0;i3;i+)for(j=0; j4 ;j+) printf(“3d“,wij) ;printf(“n“);fun (w, a,n,3,4);printf(“The A array:n“);for(i = 0 ; i n ; i+) printf(“3d“,ai);printf(“nn“);NONO();v
9、oid NONO ()/*请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/FILE *rf, *wf ; int i, j , k ;int w10 101,a100,n=0,mm,nn;rf = fopen (“indat“ ,“r“);wf= fopen (“outdat“, “w“);for(k= 0 ; k 5 ; k+) fscanf(rf,“ (i d“,&mmr &nn);for(i=0 ; imm ; i+)for(j=0,jnn,j+) fscanf(rf, “d“,wij) ;fun (w, a, &n, mm, nn);for(i=0; in ; i+) fprintf(wf,“ 3d“,a i);fprintf (wf,“n“);
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1