规则是我需要显示用户输入的两个数字之间的奇数。
但我的代码有问题。
例如当我输入: 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”
如果您确保从第一个正确的数字开始,您可以完全跳过偶数,并且不用担心排序。
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)