测试整数值范围的难度
Difficulty with testing for ranges of integer values
我正在编写过滤器程序分组幼儿园,学前班和学校,我写了我写的,如果有程序,但它输出了错误的条件,谁愿意看我的程序?
#include<iostream>
using namespace std;
int main() {
int input;// age
int kindergarden , preschool , school;
cin >> input;
if (2 <= 4)
{
cout << "kindergarden" << "nn";
if (5 <= 6)
{
cout << "preschool" << "nn";
}
else (7 <= 15);
{
cout << "school" << "nn";
}
}
}
您的第一个if语句是 if (2 <= 4)
。这将永远是正确的。2始终小于4。在该语句中,是另一个if语句,询问5 <= 6
是否。这也将永远是正确的。因此,它将输出"幼儿园学前班"。
我假设您要检查输入是否在您的if语句中的两个值之内。为此,您会写
if(2 <= input && input <= 4)
另外,您应该在第一个if语句中带上第二个if语句。为此,您应该将}
放在第二个IF语句之前,而不是在最后一个。
编辑:正如YSC指出的那样,还有另一个问题:else (7 <= 15);
。有两个问题:
1(应该是 else if(condition)
,因为普通的 else
语句不期望条件。
2(不应以;
结束。它应该以{
结尾,以保存如果条件为真,应执行的代码。
您的第一个如果包裹在另外两个方面。因为您使用了源代码的平坦凹痕,所以很难发现。
if (2 <= input && input <= 4)
{
cout << "kindergarden" << "nn";
} // here was your mistake
else if (5 <= input && input <= 6)
{
cout << "preschool" << "nn";
}
else if (7 <= input && input <= 15) // ; another mistake
{
cout << "school" << "nn";
}
您实际上可以以多种方式将其分为一个循环
#include<iostream>
#include<string>
using namespace std;
int main() {
int input = 0;// age
const struct Cat
{
int age;
string category;
} classes[] = { {2, "kindergarden"}, {5, "preschool"}, {7, "school"}, {16, ""} };
cin >> input;
// without range loop this looks tricky
for(const Cat *c = std::end(classes)-1; c >= std::begin(classes); c-- )
if ( input >= c->age )
{
std::cout << c-> category;
break;
}
}
唯一的优势是一个地方的条件聚集。当然,可能有更多的条件参数,例如上和下括号而不是下括号。
相关文章:
- 将超出范围的整数分配给有符号字符类型
- 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- 将整数范围映射到另一个范围
- 您如何找到 l 到 r 范围内所有整数的 XOR,其中 -(10^18) <= l,r <= 10^18?
- 为什么按位运算符在使用与整数中提供的位数相同的位数计算可能的最大范围时会产生错误
- 在基于范围的循环范围内的双/整数使用和数据缩小
- 什么是N位签名整数的最大保证范围
- 随机选择 2 个不在范围内的整数
- C++标准强加的整数范围
- 为什么所有可能的整数都"true"在 C++ 的 if 语句内的 long int 范围内,而 0 不是?
- 随机整数仍在生成低于或高于范围的数字?
- 在某些范围更新后获取整数数组的最终状态的有效算法是什么?
- 将无符号整数加法/减法括在一个范围周围
- 以下程序中最大 int 1000 000(在 int 范围内)的整数溢出
- 如何在给定的范围内找到整数的个数是偶数
- 测试整数是否在范围内时,逻辑错误和不正确输出
- 如何编写一个 boost::spirit::qi 解析器来解析从 0 到 std::numeric_limits:<int>:max() 的整数范围?
- 编写一个程序,该程序在0-99范围内生成10000个随机整数,并从随机数据中产生直方图