2014-12-07 94 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