1、二级 C 语言-296 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参 S 所指字符串中所有 ASCII 码值小于 97 的字符存入形参 t 所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。 例如,形参 s 所指的字符串为:Abc1x56*,程序执行后 t 所指字符数组中的字符串应为:A156*。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h int fun(c
2、har *s,char *t) int n=0; while(*s) if(*s97) /*found*/ *(t+n)= 1;n+; /*found*/ 2; *(t+n)=0; /*found*/ return 3; main() char s81,t81;int n; printf(“/nEnter a string:/n“);gets(s); n=fun(s,t); printf(“/nThere are %d letter which ASCII code is less than 97:%s/n“,n,t); (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.给
3、定程序中函数 fun 的功能是:由形参给定 n 个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。 例如,n=8 时,输入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763。 所得平均值为:195.838750,在平均值以上的实数个数应为:5。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h int fun(double x,int n) /*found*/ int j,c=0,double
4、 xa=0.0; for(j=0;jn;j+) xa+=xj/n; printf(“ave=%f/n“,xa); for(j=0;jn;j+) /*found*/ if(xj=xa) c+; return c; main() double x100=193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763; printf(“%d/n“,fun(x,8); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:根据以下公式求 P 的值,结果由函数值返回。m 与 n 为两个正整数且要求
5、mn。 (分数:40.00)_二级 C 语言-296 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参 S 所指字符串中所有 ASCII 码值小于 97 的字符存入形参 t 所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。 例如,形参 s 所指的字符串为:Abc1x56*,程序执行后 t 所指字符数组中的字符串应为:A156*。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestd
6、io.h int fun(char *s,char *t) int n=0; while(*s) if(*s97) /*found*/ *(t+n)= 1;n+; /*found*/ 2; *(t+n)=0; /*found*/ return 3; main() char s81,t81;int n; printf(“/nEnter a string:/n“);gets(s); n=fun(s,t); printf(“/nThere are %d letter which ASCII code is less than 97:%s/n“,n,t); (分数:30.00)解析:(1)*s (2)
7、s+ (3)n 解析 填空 1:判断 s 所指向的字符串中的字符符合条件时,将当前字符存放到 t 指向的字符串中,所以应填*s。 填空 2:判断完一个字符之后,将字符串的指针移到下一个位置,所以应填 s+。 填空 3:题目要求函数要返回符合条件的字符个数 n,所以应填 n。二、程序改错题(总题数:1,分数:30.00)2.给定程序中函数 fun 的功能是:由形参给定 n 个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。 例如,n=8 时,输入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763。 所得平均
8、值为:195.838750,在平均值以上的实数个数应为:5。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h int fun(double x,int n) /*found*/ int j,c=0,double xa=0.0; for(j=0;jn;j+) xa+=xj/n; printf(“ave=%f/n“,xa); for(j=0;jn;j+) /*found*/ if(xj=xa) c+; return c; main() double x100=193.199,195.
9、673,195.757,196.051,196.092,196.596,196.579,196.763; printf(“%d/n“,fun(x,8); (分数:30.00)解析:(1)int j,c=0;double xa=0.0; (2)if(xj=xa) 解析 (1)本题着重考察考生对 C 语言基本语法以及比较运算符的掌握情况。 (2)本题中的第一个错误:在 C 语言中,应成对出现,所以程序中的语句“int j,c=0;double xa=0.0;“应改为“int j,c=0;double xa=0.0;“或相同作用的语句; 本题中的第二个错误:在 C 语言中,判断大于或等于的运算符应为
10、=,所以程序中的语句“if(xj=xa)”应改为”if(xj=xa)“或相同作用的语句。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:根据以下公式求 P 的值,结果由函数值返回。m 与 n 为两个正整数且要求mn。 (分数:40.00)_正确答案:()解析:float fun(int m,int n) float p,q=1.0; int i; for(i=1;i=m;i+) q*=i; p=q; for(i=1,q=1.0;i=n;i+) q*=i; p/=q; for(i=1,q=1.0;i=m-n;i+) q*=i; p/=q; return p; 解析 本题考查算术运算的算法,先建立一个 jc 函数来计算 m 的阶乘,函数中使用一个 for 循环来计算 m 的阶乘,并将计算结果作为函数的返回值。在 fun 函数中调用 jc 函数,来计算三个阶乘的除法。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1