1、二级 C 语言-201 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是比较字符串 str1 和 str2 的大小,并返回比较的结果。 例如,当 str1=“abcd“,str2=“abcc“时,函数 proc()返回“”,比较结果为“str1str2”。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includecon
2、io.h #define M 80 char*proc(char*str1,char*str2) char*p1=str1,*p2=str2; while(*p1 if( 2) return“; p1+; p2+; if(“p1=*p2) return“=“; if(*p1= 3) return“; else return“; void main() char str1M,str2M; system(“CLS“); printf(“Input str1:/n“); gets(str1); printf(“Input str2:/n“); gets(str2); printf(“/n*the r
3、esult*/n“); printf(“/nstr1%s str2“,proc(str1,str2); (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:根据整型形参 n,计算如下公式的值: A1=1,A2=1/(5+A1),A3=1/(5+A2), ,An=1/(5+A(n-1) 例如,若 n=10,则应输出 0.192582。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includeconio.h #inc
4、ludestdio.h float proc(int n) /*found* int A100; A1=1; int i; /*found* for(i=1;i=n;i+) Ai=1.0/(5+Ai-1); return An; void main() int n; system(“CLS“); printf(“/nPlease enter n:“); scanf(“%d“, printf(“A%d=%1f/n“,n,proc(n); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写函数 proc(),其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3
5、-1/4)+(1/(2n-1)-1/2n) 例如,若主函数从键盘给 n 输入 20 后,则输出为 S=0.680803。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h double proc(int n) void main() int n; double sum; printf(“/nInput n:“); scanf(“%d“, sum=proc(n); printf(“/ns=%f/n“,sum); (分数:40.00)_二级 C 语言-201 (1)答案解
6、析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是比较字符串 str1 和 str2 的大小,并返回比较的结果。 例如,当 str1=“abcd“,str2=“abcc“时,函数 proc()返回“”,比较结果为“str1str2”。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h #define M 80 c
7、har*proc(char*str1,char*str2) char*p1=str1,*p2=str2; while(*p1 if( 2) return“; p1+; p2+; if(“p1=*p2) return“=“; if(*p1= 3) return“; else return“; void main() char str1M,str2M; system(“CLS“); printf(“Input str1:/n“); gets(str1); printf(“Input str2:/n“); gets(str2); printf(“/n*the result*/n“); printf(
8、“/nstr1%s str2“,proc(str1,str2); (分数:30.00)解析:*p1*p2 *p1*p2 “/0“解析 变量 p1 和 p2 分别指向字符串 str1 和 str2,由题目要求可知,str1 小于 str2,返回“”。因此,第一处填“*p1*p2”。str1 大于 str2,返回“”。因此,第二处填“*p1*p2”。当 str1 中的所有字符与 str2 中的前 n 个字符相等,str2 仍没有结束时,说明 str2大于 str1。因此,第三处填“/0“”。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:根据整型形参
9、n,计算如下公式的值: A1=1,A2=1/(5+A1),A3=1/(5+A2), ,An=1/(5+A(n-1) 例如,若 n=10,则应输出 0.192582。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includeconio.h #includestdio.h float proc(int n) /*found* int A100; A1=1; int i; /*found* for(i=1;i=n;i+) Ai=1.0/(5+Ai-1); return An; v
10、oid main() int n; system(“CLS“); printf(“/nPlease enter n:“); scanf(“%d“, printf(“A%d=%1f/n“,n,proc(n); (分数:30.00)解析:错误:int A100; 正确:float A100; 错误:for(i=1;i=n;i+) 正确:for(i=2;i=n;i+) 解析 根据主函数中的函数调用以及函数 proc()的返回值类型,可知变量A 为 float 类型。因此,“int A100;”应改为“float A100;”。在为变量 A 赋值时已经赋值为第一项的值,因此循环从第二项开始,因此,“f
11、or(i=1;i=n;i+)”应改为“for(i=2;i=n;i+)”。三、程序设计题(总题数:1,分数:40.00)3.请编写函数 proc(),其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3-1/4)+(1/(2n-1)-1/2n) 例如,若主函数从键盘给 n 输入 20 后,则输出为 S=0.680803。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h double proc(int n) void main() int n; double
12、 sum; printf(“/nInput n:“); scanf(“%d“, sum=proc(n); printf(“/ns=%f/n“,sum); (分数:40.00)_正确答案:()解析:double proc(int n) int i; double s=0.0; /s 为其和的变量 for(i=1;i=n;i+) s=s+(1.0/(2*i-1)-1.0/(2*i); /计算 S =(1-1/2)+(1/3-1/4)+(1/(2n-1)-1/2n) return s; /最后把所得到的和返回到主函数中 解析 由题目中所给的表达式可知,多项式的值为 n 项表达式的和。可以利用 n 次循环求出 n 项表达式的值,求和放在变量 s 中。最后将多项式的值返回到主函数当中。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1