1、二级 C 语言-41 及答案解析(总分:71.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:1.00)1.请补充函数 fun(),该函数的功能是计算下面公式 SN的值:(分数:1.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。 例如,若输入的字符串是:ab232bd34bkw,则输出结果是:abbdbkw。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #incl
2、udestdlib.h #includestdio.h #includeconio.h void proc(char * str) int i, j; for(i=0, j=0; stri!=/0; i+) /*found* if(stri=A /*found* strj=“/0“; void main() char item80; system(“CLS“); printf(“/nEnter a string: “); gets(item); printf(“/n/nThe string is:%s/n“, item); proc(item);printf(“/n/nThe string o
3、f changing is: %sin“, item); (分数:30.00)三、B编程题/B(总题数:1,分数:40.00)3.编写函数 fun,其功能是:求 Fibonacci 数列中大于 t 的最小的数,结果由函数返回。Fibonacci 数列F(n)的定义为: F(0)=0,F=1 F(n)=F(n-1)+F(n-2) 例如,当 t=1000 时,函数值为 1597。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includeconio.h #includemath.h #include
4、scdio.h int fun(int t) main() int n; n=1000; printf(“n=%d,f=%d/n“,n,fun(n); (分数:40.00)_二级 C 语言-41 答案解析(总分:71.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:1.00)1.请补充函数 fun(),该函数的功能是计算下面公式 SN的值:(分数:1.00)填空项 1:_ (正确答案:1 k=2 2 s+=(2*k-1)/s1 3 s)解析:解析 填空 1:因为变量 s 初始化为 1.0,也就是公式中的第项,所以,for 循环中,变量 k 从2 开始,直到 n。填空 2:求出的
5、 s1 就是公式中的 SN-1,(2*K-1)/S1 就是公式中的*。填空 3:变量 s 存放最后的结果,所以函数的返回值是 s 的值。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。 例如,若输入的字符串是:ab232bd34bkw,则输出结果是:abbdbkw。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includestdio.h #includeconio
6、.h void proc(char * str) int i, j; for(i=0, j=0; stri!=/0; i+) /*found* if(stri=A /*found* strj=“/0“; void main() char item80; system(“CLS“); printf(“/nEnter a string: “); gets(item); printf(“/n/nThe string is:%s/n“, item); proc(item);printf(“/n/nThe string of changing is: %sin“, item); (分数:30.00)解析
7、:解析 判断一个字符是字母字符,只要这个字符符合是大写字母或小写字母其中一种情况即可。因此 if(si=Asi=Z)(si=asi=z)应改为 if(si=Asi=Z)|(si=asi=z);在程序的最后要为新的字符串加上结束符,在 C 语言中,字符串的结束符为/0。因此“sj=“/0“;”应改为“sj=/0;”。三、B编程题/B(总题数:1,分数:40.00)3.编写函数 fun,其功能是:求 Fibonacci 数列中大于 t 的最小的数,结果由函数返回。Fibonacci 数列F(n)的定义为: F(0)=0,F=1 F(n)=F(n-1)+F(n-2) 例如,当 t=1000 时,函数
8、值为 1597。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includeconio.h #includemath.h #includescdio.h int fun(int t) main() int n; n=1000; printf(“n=%d,f=%d/n“,n,fun(n); (分数:40.00)_正确答案:(int fun(inf t) int f0=0,f1=1,f; do /*根据 Fibonacci 数列的定义求数值*/ f=f0+f1; f0=f1;f1=f; while(ff)/*如果求的数值小于 t 则继续*/ return f; )解析:解析 本题关键字有:变量数据类型及初始化;循环语句。 微分析 Fibonacci 数列每一项是前两个数列之和,f 代表第 n 项,f0 代表第 n-2 项,f1 代表第 n-1 项,退出循环时得到的数 f 即为所求。