国家二级C语言机试(操作题)模拟试卷710
程序填空题
1.给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。
例如,形参s所指的字符串为:This is a C language program,函数的返回值为6。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 int fun(char *s)
3 { int n=0,flag=0;
4 while( *s!=’\0’)
5 { if( *s!=’ ’&& flag==0) {
6 /**********found**********/
7 __1___;flag=1;}
8 /**********found**********/
9 if(*s==’ ’)flag=__2__;
10 /**********found**********/
11 __3__;
12 }
13 return n;
14 }
15 main()
16 { char str[81];int n;
17 printf(’’\nEnter a lihe text:\n’’);gets(str);
18 n=fun(str);
19 printf(’’\nThere are%d words in this text.\n\n’’,n);
20 }
(1)n++
(2)0
(3)s++
解析:函数fun的功能是计算出形参s所指字符串中包含的单词个数。
第一空:“if(*s!=¨&&flag==0)”说明找到空格了,单词的数量应加1,故第一空处应为“n++”。
第二空:“if(*s!=¨&&flag==0)”和“if(*s==’ ’)flag=__2__:”在flag为0的情况下,n才加1,因此,第二空处是将flag置0,即第二空处应为“0”。
第三空:“while(*s!=’\0’)”循环的终止条件是s达到结尾,因此,在循环体内s应该不断往字符串尾移动,即第三空为“s++”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如,若输入.8名学生的成绩:80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为:4(平均分为:75.5625)。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #define N 20
3 int fun(float *s,int n,float*aver)
4 { float ave,t=0.0;
5 int count=0,k,i;
6 for (k=0 ; k<n; k++)
7 /**********found**********/
8 t=s[k];
9 ave= t/n;
10 for (i=0; i<n; i++)
11 if (s[i] <ave) count++ ;
12 /**********found**********/
13 * aver=Ave;
14 return count;
15 }
16 main()
17 { float s[30],aver;
18 int m,i;
19 printf(’’\nPlease enter m:’’);scanf(’’%d’’,&m);
20 printf(’’\nPlease enter%d mark:\n’’,m);
21 for(i=0;i<m,i++)scanf(’’%f’’,s+i);
22 printf(’’\nThe number of students:%d\n’’,fun(s,m,&aver));
23 printf(’’Ave=%f\n’’, aver);
24 }
(1)t+=s[k];
(2)*aver=ave;
解析:程序功能是统计出低于平均分的学生人数。
(1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的“t=-s[k];”应改为“t+=s[k];”。
(2)根据题目可知,比较的结果中低于平均分的分数ave放入指针aver所指的地址单元中,而变量Ave没有定义,因此,第二标识下应将“*aver=Ave;”改为“*aver=ave;”。
程序设计题
3.请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:876 675 896 101 301 401 980 431 451 777
则输出结果为:6,980
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 void fun(int *s,int t,int *k)
3 {
4 }
5 main()
6 {
7 int a[10]={876,675,896,101,301,401,980,431,451,777},k;void NONO();
8 fun(a,10,&k);
9 printf(’’%d,%d\n’’, k,a[k]);
10 NONO();
11 }
12 void NONO()
13 {/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
14 int a[10],i,k,j;
15 FILE *rf,*wf;
16 rf=fopen(’’in.dat’’,’’r’’);
17 wf=fopen(’’out.dat’’,’’w’’);
18 for(i=0;i<10; i++) {
19 for(j=0;j<10;j++) fscanf(rf,’’%d’’,&a[j]);
20 fun(a,10,&k);
21 fprintf(wf,’’%d,%d\n’’,k,a[k]);
22 }
23 fclo
本文档预览:3600字符,共4013字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载