2016-09-30 153 views
-6

如何在for循環中只運行其中一個if語句?例如,我有5輸入...我只是希望它再打印五......但每當我運行這段代碼,如果statement..please幫我如果for循環中的語句

#include <iostream> 
#include <cstdio> 
using namespace std; 

int main() { 
    // Complete the code. 
    int a; 
    int b; 

    cin >> a; 

    for (a = 0; 0<a<10; a++) 
     { 
      if (a == 1) 
       { 
        cout << "one"; 
      } 
     if (a == 2) 
       { 
        cout << "two"; 
      } 
     if (a == 3) 
       { 
        cout << "three"; 
      } 
     if (a == 4) 
       { 
        cout << "four"; 
      } 
     if (a == 5) 
       { 
        cout << "five"; 
      } 
     if (a == 6) 
       { 
        cout << "six"; 
      } 
     if (a == 7) 
       { 
        cout << "seven"; 
      } 
     if (a == 8) 
       { 
        cout << "eight"; 
      } 
     if (a == 9) 
       { 
        cout << "nine"; 
      } 

     else if (a > 9 && a%2 == 0) 
      { 
       cout << "even"; 
     } 
     else if (a > 9 && a&2 != 0) 
      { 
       cout << "odd"; 
     } 
    } 
    return 0; 
} 
+0

你想實現什麼?你正在輸入a,但是在循環中再次初始化爲0 – Pirate

+2

刪除'for 'loop。 –

+1

你需要找到一個[良好的初學者書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)並閱讀條件表達式。在(不必要的)'for'循環中是不正確的。在閱讀本書時,關於'switch'語句的紅色和數組(你不需要一大串'if-else'或'switch'語句) –

回答

-1

你不必要它會執行所有for循環會丟棄輸入值a並永久循環!(至少直到您溢出簽名類型a)。

您正在使用它作爲for循環中的計數器替代a!如果您只想要一個輸出,則完全刪除for循環。如果您for環是保持那麼你的表達0 < a < 10應該被改寫爲0 < a && a < 10:正式0 < a < 10被評估爲(0 < a) < 10這要麼是true < 10false < 10這是總是true

還要考慮重構你的if else建立明確相互排斥的語句:

if (a == 1){ 
    cout << "one"; 
} else if (a == 2){ 
    cout << "two";  
/*and so on*/ 
} else { 
    /*all other cases*/ 
} 

雖然在這種情況下,你可能要考慮一個switch塊:

switch (a){ 
case 1: 
    cout << "one"; 
    break; // to stop program control flowing into the next case 
case 2: 
    cout << "two"; 
    break; 
/*and so on*/ 
default: 
    /*all other cases*/ 
} 
+0

道歉@Downvoters,我確實有最初的錯誤結束 – Bathsheba

+0

如果一個問題要求我使用for循環並要求輸出t: 對於每個整數(因此該範圍內的所有數字): 如果1 <= n <= 9,則打印它的英文表示。 1是「一」,2是「二」,依此類推。 否則,如果n> 9並且它是偶數,則打印「偶數」。 否則,如果n> 9並且它是奇數,則打印「奇數」。 –

-1
if() { 
} else if() { 
} 

雖然

switch() { 
} 

在你的情況下會更有效率。

更新1

@ Aleph0

下面是解決

int main() { 
    int a; 
    cin >> a; 

    switch (a) { 
    case 1: cout << "one"; break; 
    case 2: cout << "two"; break; 
    case 3: cout << "three"; break; 
    case 4: cout << "four"; break; 
    case 5: cout << "five"; break; 
    case 6: cout << "six"; break; 
    case 7: cout << "seven"; break; 
    case 8: cout << "eight"; break; 
    case 9: cout << "nine"; break; 
    default: cout << ((a & (1 << 31)) ? "negative" : (a & 1) ? "odd" : "even"); break; 
    } 
} 

問題已經被問做以下

我有5輸入.. 。我只想要它打印五個

而且,有人已經在上面正確地提到過,for循環在這裏並不重要。

+0

使用開關()不會解決他的問題。循環是這裏真正的問題。 – Aleph0

1

問題似乎是for循環。程序接受a作爲輸入的值,但隨後一旦在循環開始時,它復位a爲0(for (a = 0;...

因此它的循環10次的值,並且在每個循環a將具有不同的值,從0開始到9結束。這意味着所有的if語句都會在執行過程中的某個點被擊中,每個循環上通常會有一個循環遍佈for。 5 ...我只想要它打印五個「,只需從您的代碼中刪除for循環。

+0

不錯的答案,但不要忘記提及一些關於0 Bathsheba

+0

@Bathsheba好點我沒有注意到這一點。但是,如果OP刪除循環,反正無關緊要。我想你已經編輯了你的答案,因爲我貼了我的...所以你現在可能更好:-) – ADyson