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