获取两个数字之间的奇数

Tam*_*enn -2 c++

规则是我需要显示用户输入的两个数字之间的奇数。

但我的代码有问题。

例如当我输入: 3 和 11 输出是 5 7 9 11

不应包含 11,因为这是用户输入的内容,即使它是奇数。规则是介于两者之间。5 7 9 是我的目标。

我在想这是否是因为我的公式或我增加它的方式。

第一次尝试:我在“if”之前增加 numOne

#include <iostream>

using namespace std;

int main()
{
    int numOne,numTwo;

    cout << "Please Enter First Number : ";
    cin >> numOne;
    cout << "Please Enter Second Number ( Should be greater than first number) : " ;
    cin >> numTwo;

    cout << "Odd Numbers Between are: ";

    while (numOne<numTwo)
    {
          numOne++;
         if ( numOne % 2 == 1)

            {
                cout<<numOne<<" ";
            }
         
        }


return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出为:5 7 9 11

-仍然错误,因为 11 不应该被包含 - :(

**第二次尝试:我将 numOne 增加到“if”以下

#include <iostream>

using namespace std;

int main()
{
    int numOne, numTwo;

    cout << "Please Enter First Number : ";
    cin >> numOne;
    cout << "Please Enter Second Number ( Should be greater than first number) : " ;
    cin >> numTwo;

    cout << "Odd Numbers Between are: ";

    while (numOne<numTwo)
    {
        if  ( numOne % 2 == 1)
        {
            cout<<numOne<<" ";
        }

        numOne++;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出为:3 5 7 9

-11之前是问题,但现在当我增加到下面时它就消失了..但它仍然是错误的,因为3也不应该包括在内-:(

3和11是用户输入的。即使是奇数,也不应该包括在内。只有“它们之间”的奇数。“5 7 9”

mol*_*ilo 5

如果您确保从第一个正确的数字开始,您可以完全跳过偶数,并且不用担心排序。

int start = (numOne % 2 == 0) ? numOne + 1 : numOne + 2;
for (int i = start; i < numTwo; i += 2)
{
    cout << i << ' ';
} 
Run Code Online (Sandbox Code Playgroud)

如果你必须使用while(这对于具有固定增量的循环是不合适的,你应该只为了让你的老师满意而这样做),

int i = (numOne % 2 == 0) ? numOne + 1 : numOne + 2;
while (i < numTwo)
{
    cout << i << ' ';
    i += 2;
} 
Run Code Online (Sandbox Code Playgroud)

甚至

if (numOne % 2 == 0)
{
    numOne = numOne + 1;
}
else
{
    numOne = numOne + 2;
}
while (numOne < numTwo)
{
    cout << i << ' ';
    i += 2;
} 
Run Code Online (Sandbox Code Playgroud)

  • @Chris 我个人觉得这不太明显。我还考虑了“int start = numOne + 1 + numOne % 2;”,有些人可能更喜欢。 (2认同)