2011春江苏省计算机二级C上机试卷1
(总分40, 做题时间70分钟)
一、改错题(16分)
1. 
【程序功能】 对存储在string数组内的英文句子中所有以a开始并以e结尾的单词做加密处理。加密规则:若单词长度为偶数个字符,则将组成该单词的所有字母循环左移一次;否则循环右移一次。例如,单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。 【测试数据与运行结果】 测试数据:she is able to abide her. 屏幕输出:she is blea to eabid her. 【含有错误的源程序】 #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]=sty[m-1]; str[j]=c; } } i=k; } 。 } void main() { char string[80]="she is able to abide her."; wordchange(string[80]); puts(string); } 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程 序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)保存在T盘根目录中供阅卷使用,否则不予评分。
二、编程题(24分)
2. 
【程序功能】 矩阵数据生成及排序。 【编程要求】 1.编写函数void cresort(int a[][3],int n)。函数功能是先根据a指向的二维数组中第1列(列下标为0)和第2列(列下标为1)的值按下表所列规则生成第3列各元素的值,再以行为单位重排a数组的各行,使得所有行按第3列元素值从小到大排列。 第3列生成规则: 对任意的i(0<=i<=n-1)有: 2.编写main函数。函数功能是声明5行3列二维数组a并用测试数据初始化,用数组a 作为实参调用cresort函数,将a数组中的数据输出到屏幕及文件myf2.out中。最后将考生本人的准考证号字符串输出到文件myf2.out中。 【测试数据与运行结果】 测试数据: 27 16 0 11 12 0 6 9 0 7 13 0 8 5 0 屏幕输出: 27 16 1 6 9 1 8 5 2 11 12 3 7 13 4 【要求】 1.源程序文件名为myf2.C,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在T盘根目录中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到T盘中。
答题卡