使用嵌套 if 语句的意外结果
Unexpected result using nested if statements
这是我到目前为止编码的内容:
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Enter a month(as a number): ";
cin >> num;
if (num < 3 || num > 11)
{
cout << "Happy Wintern";
}
else if (num > 7 || num < 9)
{
cout << "Happy Summern";
}
else if (num > 3 || num < 7)
{
cout << "Happy Springn";
}
else
{
cout << "Happy Falln";
}
return 0;
}
我的程序没有按照应有的方式打印内容。我的程序应该打印: "冬天快乐"如果严格在 3 之前或严格大于 11, "快乐春天",如果它是3或更大,但严格在7之前,并且 "快乐的夏天",如果它是7或更大,但严格在9之前,并且 否则"秋天快乐"。
但出于某种原因,无论我输入什么数字,它都只打印"夏日快乐"。 唯一有效的行是我编码的第一个 if 语句。我不确定我做错了什么,但我认为这与我在 else if 语句中的操作有关。
再看看这个,如果数字小于 9 或大于 7,这是真的:
(num > 7 || num < 9)
这都是数字。
您应该使用 and(&&
( 代替,您的(num > 3 || num < 7)
也是如此。
另请注意,您的if
语句遗漏了 3,因此它被归类为秋季。这很容易被忽略,因为您只严格使用小于和大于,而不是小于/大于或等于。
也许看看这个:
if (num >= 3 && num <= 5) {
cout << "Happy Springn";
} else if (num >= 6 && num <= 8) {
cout << "Happy Summern";
} else if (num >= 9 && num <= 11) {
cout << "Happy Falln";
} else {
cout << "Happy Wintern";
}
这专门针对第 3-5 个月,然后是 6-8 个月,然后是 9-11 个月,然后是其余月份。
您还应该考虑阅读为什么"使用命名空间 std"被认为是不好的做法?
相关文章:
- 尝试将字符串/字符转换为整数会产生意外结果
- RapidXML - 代码创建意外结果
- 类中静态函数C++意外结果
- 指针数组中的意外结果
- 使用指针访问数组元素时出现意外结果
- 使用 sprintf 和 %g 将双精度转换为字符串的意外结果
- C++:比较运算符>和字符串文本的意外结果
- 具有意外结果的 C++ 闭包
- yaml-cpp 比较的意外结果
- 每次都出现意外结果
- 在 Qt 中解析嵌套的 JSON 时出现意外结果(数组不存在)
- 如何避免 std::abs 的意外结果?
- 使用嵌套 if 语句的意外结果
- A ^= B ^= A ^= B;C# Visual Studio 中的意外结果
- 逻辑错误,我将获得意外结果
- 在 c++ 中使用异步的意外结果
- 从函数的返回值将元素C++存储到 std::vector 中时出现意外结果
- 执行递增和递减时"cout"链接会产生意外结果
- OpenCL - 内核方法返回意外结果
- C++使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串会得到意外结果