【提示】
改错题相对来说比较容易,在一个程序中有4处错误。每改正一个错误,得 4 分,共16分。
通常在主函数 main() 中会有一个错误,其余3个错误在功能函数中。
错误通常存在于 条件表达式中,在本题中,有两个条件表达式
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); } |
通过对题目和程序的理解,你应该知道 k 和 j 是什么意思了。
现在你可以运行一下,看看结果如何。即使你不知道如何改正,至少应该知道在哪里出错了。
答案见下页