2016-08-10 41 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