1、计算机二级(C)上机考试 21 及答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充函数 fun(),该函数的功能是:把字符串 str 中的字符按字符的 ASCII 码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。 例如,如果输入“cdefgh”,则输出为“hgfedc”。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #define N 80 void fun(char s,int n) int i, j; char ch;
2、 for(i=0;i填空项 1:_2.改错题 在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun()的功能是计算数组元素中值为负数的平均值(不包括 0)。 例如:数组中元素的值依次为 43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int x ) double sum=0.0; int c=0, i=0; /*found
3、*/ while(xi=0) if(xi_3.编程题 下列程序定义了 NN 的二维数组,并在主函数中赋值。请编写函数 fun(),函数的功能是:求出数组周边元素的平方和并作为函数值返回给主函数中的 s。例如:若 a 数组中的值为 a=0 1 2 7 9 1 11 21 5 5 2 21 6 11 1 9 7 9 10 2 5 4 1 4 1 则返回主程序后 s 的值应为 310。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define N
4、5 int fun (int wN) main() int aNN=0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1; int i, j; int s; clrscr(); printf(“*The array*/n “); for (i=0; i_计算机二级(C)上机考试 21 答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充函数 fun(),该函数的功能是:把字符串 str 中的字符按字符的 ASCII 码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。 例如,如果输入“cdefgh
5、”,则输出为“hgfedc”。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #define N 80 void fun(char s,int n) int i, j; char ch; for(i=0;i填空项 1:_ (正确答案:【1】i 【2】sj=si)解析:填空 1:本题采用选择法进行排序。选择法的算法思路是:如果有 n 个数则从头到倒数的第 2 个数一个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按题目要求的顺序将进行比较的这两个数
6、排序(即交换)。理解了选择法的思路,则此空就非常简单了,应该填 i。填空2:借助第三个变量交换两数的方法,非常重要也非常基础,必须要求掌握。2.改错题 在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun()的功能是计算数组元素中值为负数的平均值(不包括 0)。 例如:数组中元素的值依次为 43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include dou
7、ble fun(int x ) double sum=0.0; int c=0, i=0; /*found*/ while(xi=0) if(xi_正确答案:((1)错误:while(xi=0) 正确:while(xi!=0) (2)错误:sum=sum/c; 正确:sum=sum/c; )解析:错误 1:此处考查的是对循环条件的理解,当被判断的数组元素为 0 时,说明这是数组的最后一个元素,此时要跳出循环。 错误 2:C 语言中的除法运算符是“/“,而不是“。 3.编程题 下列程序定义了 NN 的二维数组,并在主函数中赋值。请编写函数 fun(),函数的功能是:求出数组周边元素的平方和并作为
8、函数值返回给主函数中的 s。例如:若 a 数组中的值为 a=0 1 2 7 9 1 11 21 5 5 2 21 6 11 1 9 7 9 10 2 5 4 1 4 1 则返回主程序后 s 的值应为 310。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define N 5 int fun (int wN) main() int aNN=0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1; int i, j; int s; clrscr(); printf(“*The array*/n “); for (i=0; i_正确答案:(int fun (int wN) int i,j,k=0; int s=0; for(i=0;i解析:该题采用逐一判断的方式,周边元素的下标一定有一个是 0 或 N-1,且只要下标中有一个为 0 或 N-1,则它一定是周边元素。