我该如何更改我的C代码?

时间:2014-12-07 16:10:18

标签: c

我是C编程的初学者,我的代码有问题。我想写一个C代码,当我给它一个反向句子时,程序打印通常安排的句子。 (你可以看到这个例子)。我的问题是,当我没有放任何标志时?要么 !等,句子没有正确打印。 (见例子) 你能帮我解决这个问题吗?我想要一个代码来显示我给它的所有类型的反向句子。 (对不起我的英文)

Example :
Input :  oD uoy tnaw ot eunitnoc?
Output:  Do you want to continue?

但是我什么时候写这句话呢?签名:

Input :  oD uoy tnaw ot eunitnoc
Output:  Do you want to

并且它没有显示'继续'

这是我的代码:

#include <stdio.h>

int main()
{
    char sentence[100];
    int ch, i, j, k;

    for (i=0; i<sizeof(sentence)-1; i++)
    if ((sentence[i] = getchar()) == '\n')
    break;

    sentence[i] = '\0';

    for (j = 0; j <i; j++)
    {
        if(islower(sentence[j])||isupper(sentence[j]))
        continue;
        for( k=j-1;sentence[k]!=' ' && k>=0;k--)
        {
            ch=sentence[k];
            putchar(ch);
        }
        ch=sentence[j];
        putchar(ch);
    }
    return 0;
}

我尝试了很多合乎逻辑的方法,但结果并没有改变:(。

2 个答案:

答案 0 :(得分:0)

只需改变一下:

for (j = 0; j <i; j++)

到这个

for (j = 0; j <=i; j++)

答案 1 :(得分:0)

第二个for-loop更改为

for (j = 0; j <=i; j++)
{
    if(isalpha(sentence[j]))
        continue;
    for( k=j-1; k>=0 && isalpha(sentence[k]);k--)
    {
        putchar(sentence[k]);
    }
    if(sentence[j])
        putchar(sentence[j]);
}