本试卷完成时间为70分钟,其中改错题(16分),很容易拿到手。
一、改错题(16分)
【程序功能】
对存储在string数组内的英文句子中所有以a开始并以e结尾的单词做加密处理。加密规则:若单词长度为偶数个字符,则将组成该单词的所有字母循环左移一次;否则循环右移一次。例如,单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。
【测试数据与运行结果】
测试数据:she is able to abide her.
屏幕输出:she is blea to eabid her.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #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]="she is able to abide her."; wordchange(string[80]); puts(string); } |
【要求】
1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3. 改正后的源程序(文件名myf1.c)保存在T盘根目录中供阅卷使用,否则不予评分。
提示见下页