2015-04-06 375 views
0

幾個星期前我剛剛開始學習C++,所以我遠離專家。我有一個小型項目在幾個小時內到期,我遇到了一個問題。我嘗試在while循環中嵌套兩個if語句,但它似乎只運行第一個並完全忽略第二個。代碼如下:在While循環中嵌套if語句?

while (x <= rows * columns) { 
    cout << "*"; 
    x++; 
    if (x % intervals == 0) { 
     cout << "?"; 
     x++; 
    } 
    if (x % columns == 0) { 
     cout << "\n"; 
    } 
} 
cout <<"\nDONE!!!"; 

它不運行第二個if語句,因此我無法獲得任何換行符(行)。

+3

它_does_「運行第二條語句」。 C++不會隨機地跳過語句。檢查你的邏輯。特別是'x ++'....在紙上寫出你的算法,並通過迭代迭代迭代。 – 2015-04-06 02:23:52

+0

這裏x ++是犯罪嫌疑人。該程序肯定執行if語句。這可能是條件不滿足 – ucsunil 2015-04-06 02:25:56

+1

's/likely/certain /' – 2015-04-06 02:29:17

回答

0

如何做到這一點: 我只是分解了x++行。

while (x <= rows * columns) { 
    cout << "*"; 
    if (x % intervals == 0) { 
     cout << "?"; 

    } 
    if (x % columns == 0) { 
     cout << "\n"; 
    } 
    x++; 
} 
cout <<"\nDONE!!!"; 
0

如果列是多個時間間隔,則第二個語句將永遠不會評估爲true。

1

沒有理由在while循環中不能有兩個或多個if語句。

沒有上下文很難說出了什麼問題。但是,由於您在其中一個IF語句中運行x ++,因此您可能會導致循環在您觸發「列」條件之前退出,因爲您可能會跳過可由您整除的「X」值列(在X%列說明)

請提供一些背景

0

找到了我的問題。它跳過它的原因是因爲我運行的試驗是奇數,並且x初始化爲1.因此,第一個if語句中的第二個x ++使x跳過該奇數。因此,x%列從未產生0.我修正了它。無論如何,謝謝你們。