国家二级C语言机试(操作题)模拟试卷356
程序填空题
1.给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符“*”补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #include<string.h>
3 #define M 5
4 #define N 20
5 void fun(char(*ss)[N])
6 { int i,j,n,len=0;
7 for(i=0;i<M;i++)
8 {len=strlen(ss[i]);
9 if(i==0)n=len;
10 if(len>n)n=len;
11 }
12 for(i=0;i<M;i++) {
13 /**********found**********/
14 n=strlen( __1__);
15 for(j=0;j<len-n;j++)
16 /**********found**********/
17 ss[i][ __2__]=’*’;
18 /**********found**********/
19 ss[i][n+j+__3__]=’\0’;
20 }
21 }
22 main()
23 { char ss[M][N]={’’shanghai’’,’’guangzhou’’,’’beij ing’’,’’tianj ing’’,’’cchongqing’’};
24 int i;
25 printf(’’The original strings are:\n’’);
26 for(i=0;i<M;i++)printf(’’%s\n’’,ss[i]);
27 printf(’’\n’’);
28 fun(ss);
29 printf(’’The resuit is:\n’’);
30 for(i=0;i<M;i++)printf(’’%s\n’’,ss[i]);
31 }
(1)ss[i] (2)n+j (3)1
解析:函数fun的功能是求出形参ss所指字符串数组中最长字符串的长度。
第一空:第一个循环求最长字符串的长度“len”,在第二个循环内在其他字符串的后面补“*”,使其达到长度“len。”在“for(j=0;j<len-n;j++)”语句中,“i<len-n”是在字符串的后面填“len-n”个“*”,故n是字符串“ss[i]”的长度,因此第一空应为“ss[i]”。
第二空:循环“for(j=0;j<len-n;j++)”目的是在字符串的后面填len-n个“*”,第二空处应为“n+j”。
第三空:字符串以“\0”结束,因此需在字符串后加结束符,故第三空应为“1”。
程序修改题
2.给定程序MODl1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:dcba。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 /**********found**********/
3 fun(char a)
4 { if (*a)
5 { fun(a+1);
6 /**********found**********/
7 printf(’’%c’’*a);
8 }
9 }
10 main()
11 { char s[10]=’’abcd’’;
12 printf(’’处理前字符串=%s\n处理后字符串=’’,s);
13 fun(s);printf(’’\n’’);
14 }
(1)void fun(char *a) (2)printf(’’%c’’,*a);
解析:(1)主函数中“fun(s);”语句中的s是数组名,所以在fun函数中参数的定义应该是指针型,“fun(char a)”改为“void fun(char *a)”。
(2)printf函数的调用形式是:printf(格式字符串,输出项表),在格式字符串和输出项表之间有“,”,因此第二个标识处应该是“printf(’’%c’’,*a);”。
程序设计题
3.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define N 8
4 struct slist
5 {double s;
6 struct slist *next;
7 };
8 typedef struer slist STREC;
9 double fun(STREC *h)
10 {
11
12 }
13 STREC * creat(double * s)
14 {STREC *h,*p,*q;int i=0;
15 h=p=(STREC *)malloc(sizeof(STREC));p->s=0;
16 while(i<N)
17 {q=(STREC *) malloc(sizeof(STREC));
18 q->s=s[i];i++;p->next=q;p=q;
19 }
20 p->next=0;
21 return h;
22 }
23 outlist(STREC *h)
24 {STREC *p;
25 p=h->next;printf(’’head’’);
26 do
27 {printf(’’->%4.1f’’,p->s);p=p-> next;)
28 while(p!=0);
29 printf(’’\n\n’’);
30 }
31 main()
32 {double s[N]={85,76,69,85,91
本文档预览:3600字符,共4714字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载