1、国家二级( C语言)机试模拟试卷 344及答案与解析 一、程序填空题( 30分) 1 函数 fun的功能是:把形参 a所指数组中的最大值放在 a0中,接着求出 a所指数组中的最小值放在 a1中;再把 a所指数组元素中的次大值放在 a2中,把 a数组元素中的次小值放在 a3中:其余以此类推。例如:若 a所指数组中的数据最初排列为: 1、 4、 2、 3、 9、 6、 5、 8、 7,则按规则移动后,数据排列为: 9、 1、 8、2、 7、 3、 6、 4、 5。形参 n中存放 a所指数组中数据的个数。 请在程序的下划线处填入正确的内容并把下 划线删除,使程序得出正确的结果。 注意:源程序存放在考
2、生文件夹下的 BLANKl C中。不得增行或删行,也不得更改程序的结构 ! #include #define N 9 *found* void fun(int 【 1】, int n) int i, j, max, min, px, pn, t; *found* for(i=0; iaj) min=aj; pn=j; if(px!=i) t=ai; ai=max; apx=t; if(pn=i)pn=px; if(pn!=i+1) t=ai+1; ai+1=min; apn=t; main() (int bN=1, 4, 2, 3, 9, 6, 5, 8, 7, i; printf(” nTh
3、e original data: n”); for(i=0; i #include void fun (char str10, int m, char *pt) /*found*/ int k, q; for (k = 0; k #include #define N 8 struct slist double s; struct slist *next; ; typedef struct slist STREC; double fun(STREC *h) STREC * creat(double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(s
4、izeof(STREC);p-s=0; while(is=si; i+; p-next=q; p=q; p-next=0; return h; outlist(STREC *h) STREC *p; p=h-next; printf(“head“); do printf(“-%2.0f“,p-s);p=p-next; while(p!=0); printf(“nn“); main() double sN=85,76,69,85,91,72,64,87, max;void NONO (); STREC *h; h=creat(s); outlist(h); max=fun(h); printf(
5、“max=%6.1fn“,max); NONO(); void NONO () /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i,j ; double sN,max; STREC *h ; in = fopen(“in.dat“,“r“); out = fopen(“out.dat“,“w“); for(i = 0 ; i s; STREC *p; p=h-next; while(p) if(p-smax) max=p-s; p=p-next; return max; 【试题解析】 进入 fun函数,根据前面的分析: ( 1)设置一个工作指针,指向头节点。设置一个变量存放最大值,初值为头节点数据域的值。 ( 2)移动工作指针到后一个节点,并将数据域的值与 max比较,将较大的值存入max。 ( 3)移动工作指针,指向下一个节点,直到指针指向链表尾。