现在的位置: 首页 > 14 二级C语言 > 正文

2011春江苏省二级C上机真题C01 改错题

2011年09月06日 14 二级C语言 ⁄ 共 1289字 ⁄ 字号 暂无评论

【提示】

改错题相对来说比较容易,在一个程序中有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 是什么意思了。

现在你可以运行一下,看看结果如何。即使你不知道如何改正,至少应该知道在哪里出错了。

答案见下页

抱歉!评论已关闭.