2016-08-10 81 views
-5

我已經完成了大多數情況下用於輸出C++中兩個整數之間奇數的代碼。然而,它不適用於負數和/或如果這兩個值的差異小於3(例如,如果兩個數字是2 & 5,但是如果兩個數字是2,則它不起作用)2 & 4 )。在C++中輸出2個整數之間的奇數數字

我知道這是我的代碼的原因,每次while循環迭代時都會加2,我只是不確定如何糾正它。

while (secondOddNum - firstOddNum > 2) 
    { 
     if (firstOddNum % 2 > 0) //positive numbers 
     { 
      firstOddNum += 2; 
      sumOdd += pow(firstOddNum,2); 
      cout << firstOddNum << endl; 

     } else // even numbers 
     { 
      firstOddNum += 1; 
      sumOdd += pow(firstOddNum,2); 
      cout << firstOddNum << endl; 
     } 

感謝

+3

使用'%'模塊運算符。它會返回一個部門的剩餘部分。即'3%2 == 1','2%2 == 0','0%2 == 0'等。 –

+0

更改'>'爲'> =' –

+0

@Lauren Curphey如果其中一個答案在下面幫助你,你應該點擊旁邊的複選標記來表示它是正確的答案。 – Cody

回答

1

我覺得你的邏輯過於複雜的問題一點點。你的意思是做這樣的事嗎?

void OutputOdds(int min, int max) 
{ 
    for(int i = min; i <= max; i++) 
    { 
     if(i % 2 == 1 || i % 2 == -1) 
      cout << i << " "; 
    } 
} 

測試:

OutputOdds(-25, 6); 
cout << endl << endl; 
OutputOdds(1, 3); 
cout << endl << endl; 
OutputOdds(2, 4); 

打印

-25 -23 -21 -19 -17 -15 -13 -11 -9 -7 -5 -3 -1 1 3 5 

1 3 

3 
1

你可以嘗試這樣的事情:

void printOddsBetween(int min, int max) { 
    int t = min + (min % 2 == 0); 
    while (t <= max) { 
    cout << t << endl; 
    t += 2; 
    } 
} 

它開始於最接近的奇數值min。然後只打印每個奇數值至max