如何解决C ++单独的“ if”语句不起作用,但嵌套的“ if”语句却起作用
我正在研究使用C ++的编程原理和实践,并且在while语句中遇到了多个“ if”语句的问题。简而言之,我运行以下命令,最终的“ if”语句输出每次迭代,而与输入无关:
int main() {
int i = 0;
double a;
double b;
constexpr double ratio = (1.0/100);
while (i<5) {
cout << "Please enter two doubles\n"
<< "> ";
cin >> a >> b;
if (a > b) {
cout << "The smaller value is " << b << " and the larger value is " << a << ".\n";
}
else if (a < b) {
cout << "The smaller value is " << a << " and the larger value is " << b << ".\n";
}
else if (a == b) {
cout << "The numbers are equal.\n";
}
if (((a-b) < ratio) || ((b-a) < ratio)) {
cout << "Also,the numbers are almost equal.\n";
}
++i;
}
...
但是,如果我将其修改为使用嵌套的“ if”语句,它将按预期工作:
int main() {
int i = 0;
double a;
double b;
constexpr double ratio = (1.0/100);
while (i<5) {
cout << "Please enter two doubles\n"
<< "> ";
cin >> a >> b;
if (a > b) {
cout << "The smaller value is " << b << " and the larger value is " << a << ".\n";
if ((a - b) < ratio) {
cout << "Also,the numbers are almost equal.\n";
}
}
else if (a < b) {
cout << "The smaller value is " << a << " and the larger value is " << b << ".\n";
if ((b - a) < ratio) {
cout << "Also,the numbers are almost equal.\n";
}
}
else if (a == b) {
cout << "The numbers are equal.\n";
}
++i;
}
...
这是怎么回事?我觉得也许我正在失去输入,但是我不知道为什么...
解决方法
比率值为0.01。 A-B或B-A中的任何1个都会导致负值,该值始终小于比率。
if (((a-b) < ratio) || ((b-a) < ratio))
您可能需要将此条件更改为绝对值。
#include <cstdlib> // for abs()function
if (abs(a-b) < ratio)) {
cout << "Also,the numbers are almost equal.\n";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。