1、2018 年计算机等级考试二级 C 语言程序题练习 21 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是将 a 所指 4x3 矩阵中第 k 行的元素与第 0 行元素进行交换。例如,有下列矩阵:请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_(2).(分数:10)填空项 1:_(3).(分数:10)填空项 1:_二、程序改错题
2、(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是:读入一个字符串(长度小于 20),将该字符串中的所有 字符按ASCII 码升序排序后输出。例如,若输入 edcba,则应输出 abcde。请改正程序中的错误,使它能输出正确的 结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构!给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)请编写一个函数 fun,其功能是:将 ss 所指字符串中所有下标为奇数位置上的字母转换为大写 (若该位置上不是字母,则不转换)。例如,若输入“abc4Efg”,则应输出“aBC4
3、EFg”。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入你编写的若干语句。给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 21 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是将 a 所指 4x3 矩阵中第 k 行的元素与第 0 行元素进行交换。例如,有下列矩阵:请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C
4、 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_ (正确答案:k)解析:变量 k 在函数 fun 中已经使用,但在 函数体中没有定义,肯定是在函数的形参中定义的, 所以应填 k。(2).(分数:10)填空项 1:_ (正确答案:N)解析:数组共 N 列,所以应填 N。(3).(分数:10)填空项 1:_ (正确答案:aki)解析:这部分语句实现的功能是变量值的交 换,所以应填 aki。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是:读入一个字符串(长度小于 20),将该字符串中的所有
5、 字符按ASCII 码升序排序后输出。例如,若输入 edcba,则应输出 abcde。请改正程序中的错误,使它能输出正确的 结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构!给定源程序如下。(分数:30.00)_正确答案:(1) for(i=strlen(t)-1; i; i-)或 for(i=strlen(t)-1; i0; i-)(2) if(tjtj+1)解析:(1 )本题是利用选择法对数组元素进行比较排 序。所谓选择法,是依次用当前取得的元素和其后面的元素进行比较,在第一个元素和其后面的元素进行比较时,可以借助中间变量来对两个数进行交换,要保证第一个元素始终
6、存放数组中的最大数, 以后依次挑选出次大数,这样最终的数组就是有序 的。strlen函数所求得的字符串长度包括字符串结束符,所以要减 1。(2)这里是一个分析逻辑错误,题中要求按升序排序,所以应改为 if(tjtj+1)。三、程序设计题(总题数:1,分数:40.00)请编写一个函数 fun,其功能是:将 ss 所指字符串中所有下标为奇数位置上的字母转换为大写 (若该位置上不是字母,则不转换)。例如,若输入“abc4Efg”,则应输出“aBC4EFg”。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入你编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:该题要求将给定字符串中奇数位置的字母转换 为大写,需要先判断奇数位置以及是否是小写字母, 如果是再通过其转换方法进行转换。从学习中知道,只要将小写字母减去 32 即转成 大写字母,将大写字母加上 32 即转成小写字母。本 程序用 if 语句实现转换功能。