2014-01-23 37 views
1
int main() { 
    int input = 0; 
    do { 
     if(input > 1) { 
      printf("You entered"); 
      break; 
     } 

     printf("Enter an integer (> 1): "); 
     scanf("%d",&input); 

    } while(input < 2); 

    return 0; 
} 

你好,我是新來的C.任何人都可以解釋什麼是休息嗎?在此程序中,中斷前「您輸入」的語句不顯示在控制檯上。我知道java,但這個工作完全不同。爲什麼破解之前的代碼不起作用?

+0

將輸入設置爲2,並在第一次printf之前刪除星號,然後查看會發生什麼。 – AndyG

+0

謝謝大家。我沒有注意到我在循環中犯的錯誤。我認爲休息時出了點問題。謝謝你們。 –

回答

4

12之間沒有整數。更改

if(input > 1) 

if(input > 0) 

後,如果您輸入1然後程序進入if體然後打印You entered並在遇到break聲明,立即終止do-while循環。

+0

你沒有真正回答任何問題。 – ugoren

+1

@ugoren;是的,我做到了。請參閱while(輸入<2);'。 – haccks

+0

他沒有說「請修復我的程序」。他問他的計劃有什麼「突破」和什麼問題。 – ugoren

2

「break」語句會導致您的代碼立即退出循環。

你沒有看到任何輸出,因爲你在輸入嚴格小於2,但你的if語句尋找輸入這是嚴格大於1

這是行不通的僅大循環;如果輸入1,if語句將不會執行(因爲1> 1爲false),並且如果輸入2,則循環立即退出(因爲2 < 2爲false)。

您可能需要循環,當輸入< = 2,或者你需要測試輸入> = 1

說了這麼多......

標準輸出通常是行緩衝 ,這意味着在緩衝區已滿或發送換行符之前,控臺上不會顯示任何內容。您需要手動刷新流或發送換行符作爲格式字符串的一部分;無論是

printf("You entered"); 
fflush(stdout);   

printf("You entered\n"); 

應該工作。

相關問題