1、计算机二级(C)上机考试 17 及答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 str 是一个由数字和字母字符组成的字符串,由变量 num 传入字符串长度。请补充函数 fun(),该函数的功能是:把字符串 str 中的数字字符转换成数字并存放到整型数组 bb 中,函数返回数组 bb 的长度。 例如:str=“Bcd123e456hui890”,结果为:123456890。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #define N 80 int bb
2、N; int fun(char s,int bb,int num) int i,n=0; for(i=0;i_2.改错题 在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun()的功能是计算数组元素中值为负数的平均值(不包括 0)。 例如:数组中元素的值依次为 43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int x )
3、 double sum=0.0; int c=0, i=0; /*found*/ while(xi=0) if(xi_3.编程题 请编写一个函数 fun(),它的功能是:比较两个字符串的长度,(不得调用 C 语言提供的求字符串长度的函数),函数返回较短的字符串。若两个字符串长度相等,则返回第 1 个字符串。 例如,输入 nanjing nanchang (为回车键),函数将返回 nanjing。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include char *fun(char *s, c
4、har *t) main() char a20,b10,*p,*q; int i; printf(“Input 1th string: “); gets(a); printf(“Input 2th string: “); gets(b); printf(“%s“,fun(a,b); (分数:-1.00)_计算机二级(C)上机考试 17 答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 str 是一个由数字和字母字符组成的字符串,由变量 num 传入字符串长度。请补充函数 fun(),该函数的功能是:把字符串 str 中的数字字符转换成数字并存放到整型数组 bb 中,函数返回数组
5、bb 的长度。 例如:str=“Bcd123e456hui890”,结果为:123456890。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #define N 80 int bbN; int fun(char s,int bb,int num) int i,n=0; for(i=0;i_正确答案:(【1】si= 0 int c=0, i=0; /*found*/ while(xi=0) if(xi_正确答案:((1)错误:while(xi=0) 正确:while(xi!
6、=0) (2)错误:sum=sum/c; 正确:sum=sum/c; )解析:错误 1:此处考查的是对循环条件的理解,当被判断的数组元素为 0 时,说明这是数组的最后一个元素,此时要跳出循环。 错误 2:C 语言中的除法运算符是“/“,而不是“。 3.编程题 请编写一个函数 fun(),它的功能是:比较两个字符串的长度,(不得调用 C 语言提供的求字符串长度的函数),函数返回较短的字符串。若两个字符串长度相等,则返回第 1 个字符串。 例如,输入 nanjing nanchang (为回车键),函数将返回 nanjing。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任
7、何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include char *fun(char *s, char *t) main() char a20,b10,*p,*q; int i; printf(“Input 1th string: “); gets(a); printf(“Input 2th string: “); gets(b); printf(“%s“,fun(a,b); (分数:-1.00)_正确答案:(char *fun(char *s, char *t) int i,j; for(i=0;si!= /0;i+); /*求字符串的长度*/ for(j=0;tj!= /0;j+); if(i=j) /*比较两个字符串的长度*/ return s; /*函数返回较短的字符串,若两个字符串长度相等,则返回第 1 个字符串*/ else return t; )解析:本题中,第 1 个 for 循环的作用是求出 s 的字符个数 i,第 2 个 for 循环的作用是求出 t 的字符个数 j,因为任何循环都要控制一条语句,所以在每一个 for 循环条件后面必须要有一个分号。 本题也可用如下技巧: #include /*一定要