2014-12-07 74 views
-1

我是C编程的初学者,我的代码有问题。我想写一个C代码,当我给它一个相反的句子时,程序会打印出通常排列的句子。 (你可以看到这个例子)。我的问题是,当我没有像任何标志?要么 !句子没有正确打印。 (看例子) 你能帮我解决这个问题吗?我想要一个代码来展示我安排的所有反向句子。 (请原谅我的英语)我如何更改我的C代码?

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

但是当我写这个句子whithout?签名:

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; 
} 

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

+0

我觉得我们这里有一个新的学校班级的SO!如果(islower(句子[j])|| isupper(句子[j]))' - 因此,如果字母较低,那么这个问题与输入和程序完全相同的输入和程序被询问:D – Rizier123 2014-12-07 16:12:25

+1

'或*大写,你不复制剩余的字符?考虑一下,然后用标点符号来思考你的问题。 – 2014-12-07 16:12:46

+0

@EdS .:我相信那里的代码正在推进'j'到第一个非alpha字符。我相信Word解析。 – 2014-12-07 16:13:36

回答

0

只要改变这一点:

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

这个

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

我在写这个问题之前改变了它,但是当我这样做时,第一个例子的答案将转向你想继续吗?继续 – 2014-12-07 16:17:14

0

第二个for循环变化

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]); 
} 
+0

你的答案在'C'标签中每次都是最好的:D也许你可以解释OP正在发生什么/你已经改变了什么,以便它现在可以工作。 – Rizier123 2014-12-07 16:49:46

+0

谢谢兄弟。 ^。^ – 2014-12-07 16:55:23

+0

1)'k> = 0':您需要先检查。 2)'sentence [k]!=''':只比较空格('''')的错误。意义上出现差异。 3)'if(sentence [j])':检查包含在扫描范围内的'\ 0'。 – BLUEPIXY 2014-12-07 16:57:57