国家二级C语言机试(操作题)模拟试卷376
程序填空题
1.函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。
例如,当a=3,b=5,c=4时,中数为4。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
int fun(int a,int b,int c) .
{
int t;
/*********found**********/
t = (a>b) ? (b>c? b :(a>c?c:
____1____ )) : ((a>c)? ____2 ____ : ((b>c)?
c:____3____));
return t;
}
main ()
{ int a1=3,a2=5,a3=4,r;
r =fun (a1, a2, a3) ;
printf(\\
(1)a
(2)a
(3)b
解析:fun函数的功能是求得三个数中间的数。
第一空:语句“(a>b)?(b>c?”表示a>b>c,根据题目要求,则中间值为b,若只是满足第一个“?”前面的条件,而c>b,则选择执行“(a>c?c:____1____j”,当a>c时取值c,所以a<c时中间值为a,所以第一空填“a”。
第二空:语句“(a>c)?”是对a、c的比较选择,第三空处的“(b>c)?c”根据b、c的判断,题目已经给出了c,所以这里应该是a。
第三空:第三空中对于b、c的判断选择缺少b,所以这里填“b”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a’—u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。
转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f.若形参是字母W,则转换为小写字母b。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构!
#include
#include
char fun (char c)
/*************found*************/
C=C+32;
if(C>=’a’ && C<=’u’)
/*************found*************/
c=c—5;
c=c—21;
return c;
}
main ( )
{ char cl,c2;
printf (\\
(1)c=c+32;
(2)c=c+5;
解析:函数的功能是将某些大写字母转换为对应小写字母之后的第五个字母。
(1)第一个标识下“C=C+32:”中变量C没有定义,编译时会提示出错。根据题意,这行语句的作用是将大写字母转换为小写字母,C语句中大写字母转换为对应的小写字母是对原有ASCII码加32,小写转换为大写是减32,所以应将“C=C+32;”改为“c=c+32;”。
(2)第二个标识下是将小写字母转换为其后的第五个字母,字母在a~u之间只加上5就可以了,原题中减5则是将字母转换到该字母之前的第五个字母,所以第二个标识下“c=c—5; ”改为“c=c+5:”。
程序设计题
3.请编写函数fun,其功能是:计算并输出
1 int i;
2 double fac=1.0;
3 double sum=1.0;
4 for(i=2;i<=n;i++){
5 fac+=sqrt (i);
6 sum+=fac; }
7 return sum;
解析:该程序功能是对题干中给出的多项式的求解。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。
本文档预览:3600字符,共2318字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载