1、二级 C语言机试-184 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是将字符串 tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“Are you come from Sichuan?”,则输入“are you come from sichuan?”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.h#includestring.h#includeconio.hcha
2、r *fun(char tt)int i;for(i=0;tti;i+)if(tti=A)return ( 【3】 ) ;main()char tt81;printf(“/nPlease enter a string:“);gets(tt);printf(“/nThe result string is: /n%s“,fun(tt);(分数:30.00)填空项 1:_二、改错题(总题数:1,分数:30.00)2.下列给定程序中,fun()函数的功能是:根据形参 m,计算下列公式的值。t=-1+1/2+1/3+1/4+1/m例如,若输入 5,则应输出 2.283333。请改正程序中的错误,使它能计
3、算出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include conio.h#include stdio.hdouble fun(int m)double t=1.0;int i;for(i=2;i=m;i+)/*found*/t+=1.0/k;/*found*/return i;main()int m;clrscr();printf(“/nPlease enter linteger number:“);scanf(“%d“,printf(“/nThe result is%1f/n“, fun(m);(分数:30.00)填空项 1:_三、编程题
4、(总题数:1,分数:40.00)3.printf(“/n“);(分数:40.00)_二级 C语言机试-184 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是将字符串 tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“Are you come from Sichuan?”,则输入“are you come from sichuan?”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include
5、stdio.h#includestring.h#includeconio.hchar *fun(char tt)int i;for(i=0;tti;i+)if(tti=A)return ( 【3】 ) ;main()char tt81;printf(“/nPlease enter a string:“);gets(tt);printf(“/nThe result string is: /n%s“,fun(tt);(分数:30.00)填空项 1:_ (正确答案:1 tti=Z 2 tti+=32 3 tt)解析:解析 填空 1;此处考查判断大写字母的方法,如果字符的 ASCII码大于字符 A的
6、ASCII码,并且小于字符 Z的 ASCII码,则此字符为大写字母。填空 2;考生必须掌握,大写字母转换为小写字母的方法,小写字母的 ASCII码比大写字母的 ASCII 码大 32。填空 3:函数 fun的返回值为字符型指针,而字符型的数组名就是字符型指针,所以返回 tt。二、改错题(总题数:1,分数:30.00)2.下列给定程序中,fun()函数的功能是:根据形参 m,计算下列公式的值。t=-1+1/2+1/3+1/4+1/m例如,若输入 5,则应输出 2.283333。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序
7、:#include conio.h#include stdio.hdouble fun(int m)double t=1.0;int i;for(i=2;i=m;i+)/*found*/t+=1.0/k;/*found*/return i;main()int m;clrscr();printf(“/nPlease enter linteger number:“);scanf(“%d“,printf(“/nThe result is%1f/n“, fun(m);(分数:30.00)填空项 1:_ (正确答案:错误:t+=1.0/k; 正确:t+=1.0/i;(2) 错误:return i; 正确
8、:return t;)解析:解析 该题目考查分母成等差数列递增的一个数学公式,我们先看看循环条件 for(i=2;i=m;i+),i是从 2开始递增到 m,所以 t的值应该由 1.0/i的值逐步循环叠加后的结果,而不是t+=1.0/k;,return i;考查对程序的解读能力,当循环结束后(由输入 m 的值决定),函数值返回当前 t的值。三、编程题(总题数:1,分数:40.00)3.printf(“/n“);(分数:40.00)_正确答案:(int fun (int aN)int i,j;for(i=0;iN;i+)for(j=0;j=i;j+)aij=0; *将数组左下半三角元素中的值全部置成 0*/)解析:解析 本题旨在考查控制数组中左下半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。