C++ 查找两个数字之间的值范围时的奇怪行为
我最近开始阅读“c++入门第5版”。我目前正在进行以下练习: 练习1.11: 编写一个程序,提示用户输入两个整数。 打印这两个整数指定范围内的每个数字 我编写了以下代码作为解决方案:C++ 查找两个数字之间的值范围时的奇怪行为,c++,C++,我最近开始阅读“c++入门第5版”。我目前正在进行以下练习: 练习1.11: 编写一个程序,提示用户输入两个整数。 打印这两个整数指定范围内的每个数字 我编写了以下代码作为解决方案: #include <iostream> int main(){ int num1 = 0, num2 = 0; std::cout << std::endl << "Please enter two numbers to find a range between
#include <iostream>
int main(){
int num1 = 0, num2 = 0;
std::cout << std::endl << "Please enter two numbers to find a range between" << std::endl;
std::cin >> num1 >> num2;
if (num1 < num2)
while (num1 <= num2){
std::cout << std::endl << num1;
++num1;
}
if (num2 < num1)
while (num2 <= num1){
std::cout << std::endl << num2;
++num2;
}
if (num1 == num2)
std::cout << std::endl << num1;
std::cout << std::endl;
样本输出:
1
2
3
4
5
5
6
我不明白的是,如果我输入的第一个数字大于第一个数字(例如num1>num2),那么程序会产生所需的结果,例如:
Please enter two numbers to find a range between
>> 5 1
1
2
3
4
5
特别令人困惑的是,当我交换条件语句的顺序时,第一个示例将正常工作,第二个示例将产生不正确的输出
说清楚一点,我知道这个练习有一个更干净、正确的解决方案。我只想知道我的程序以这种方式运行的原因
我非常感谢你的解释 太简单了。
只需为底部的两个if循环添加“else”
基本上,您只需要经历1个“如果”循环,但您的程序会经历每个“如果”循环实际上,当
的所有迭代都完成时,您会在第一个条件中增加num1
,而循环完成了第二个if条件
的循环退出条件,因为这是第一个if
的循环退出条件(即,正如Technoid所说,num1添加else语句。您的代码现在应该是:
#include <iostream>
int main(){
int num1 = 0, num2 = 0;
std::cout << std::endl << "Please enter two numbers to find a range between" << std::endl;
std::cin >> num1 >> num2;
if (num1 < num2)
while (num1 <= num2){
std::cout << std::endl << num1;
++num1;
}
else if (num2 < num1)
while (num2 <= num1){
std::cout << std::endl << num2;
++num2;
}
else if (num1 == num2)
std::cout << std::endl << num1;
/* Alternatively for (num1 ==num2) use:
else
std::cout << std::endl << num1;
*/
std::cout << std::endl;
}
#包括
int main(){
int num1=0,num2=0;
标准:cout>num2;
如果(num1 而(num1)只是为了补充一些说明,如果您的程序进入第一个条件,它以num1
始终大于num2
结束,从而触发第二个条件。这就是我最后将其更改为的条件,感谢您的确认
#include <iostream>
int main(){
int num1 = 0, num2 = 0;
std::cout << std::endl << "Please enter two numbers to find a range between" << std::endl;
std::cin >> num1 >> num2;
if (num1 < num2)
while (num1 <= num2){
std::cout << std::endl << num1;
++num1;
}
else if (num2 < num1)
while (num2 <= num1){
std::cout << std::endl << num2;
++num2;
}
else if (num1 == num2)
std::cout << std::endl << num1;
/* Alternatively for (num1 ==num2) use:
else
std::cout << std::endl << num1;
*/
std::cout << std::endl;
}