2011年江苏计算机二级C语言上机考试试题

需积分: 7 1 下载量 176 浏览量 更新于2024-09-10 收藏 29KB DOCX 举报
"江苏2级试卷相关试题,2011年春季江苏省计算机二级考试C语言上机部分,包括改错题和编程题" 在此次江苏省计算机二级考试中,C语言上机部分主要考察了两个方面的知识:一是程序错误检测与修复能力,二是矩阵数据的生成与排序算法实现。 首先,我们来看改错题。该题目的程序功能是加密以"a"开头且以"e"结尾的英文单词,通过循环移位实现加密。程序中存在一些错误,需要考生找出并修正。错误代码中,`if(str[j]=='a'||&&str[k-1]=='e')`这一行有误,`||&&`是不合法的逻辑操作符,应改为`if(str[j]=='a'&&str[k-1]=='e')`。另外,判断单词长度是否为偶数的条件语句`(k-j)%2=0`应该使用等号右边的双等号`==`而非单等号`=`,即`if((k-j)%2==0)`。在主函数中,调用`wordchange`函数时,`wordchange(string[80])`是错误的,应该去掉数组下标,写成`wordchange(string)`。最后,注意题目要求不能添加或删除语句,只能修改已有语句。 改正后的程序如下: ```c #include<stdio.h> #include<ctype.h> void wordchange(char str[]) { int i, j, k, m; char c; for (i = 0; str[i]; i++) { for (j = i, k = i; isalpha(str[k]); k++); if (str[j] == 'a' && str[k - 1] == 'e') { if ((k - j) % 2 == 0) { c = str[j]; for (m = k - 1; m > j; m--) str[m] = str[m + 1]; str[k - 1] = c; } else { c = str[k - 1]; for (m = k - 1; m > j; m--) str[m] = str[m - 1]; str[j] = c; } } i = k; } } void main() { char string[80] = "sheisabletoabideher."; wordchange(string); puts(string); } ``` 接下来是编程题,要求编写一个函数`void cresort(int a[][3], int n)`,该函数需要完成两个任务:根据二维数组a的第一列和第二列生成第三列的值,并按照特定规则重新排列数组的行。具体的生成规则和排列规则未在摘要中给出,考生需要根据题目补充的信息来完成这部分编程。 这次考试涉及的C语言知识点包括: 1. 字符串处理 2. 循环结构 3. 条件判断 4. 逻辑运算符的正确使用 5. 数组操作 6. 函数的定义与调用 7. 程序错误检测与修复 考生需要具备扎实的C语言基础,对程序逻辑有清晰的理解,同时能够熟练地根据题目要求进行代码编写和修改。