我正在尝试查看数字是否可以被数组中的任何给定数字整除。 我已经看到了很多关于number1%number2 == 0的答案,但是我没有找到任何数字数组,我宁愿不自己写出阵列中的每个数字(这样做会很难)。
所以这就是我想弄清楚的。正如您所看到的,目前唯一有效的方法是,如果我给它的最后一个数字为真,否则else语句会启动并将number1_result计算为false。
int square_numbers[10] = { 4, 9, 25, 36, 49, 64, 81, 100, 121, 144 };
int number1;
bool number1_result;
cin >> number1;
for (int i = 0; i < 10; i++) {
if(number1 % square_numbers[i] == 0)
number1_result = true;
else
number1_result = false;
}
如何确保循环曾经评估为真一次,这是真的。如果它至少不是一次,那就错了。
如果您需要更多信息,请告诉我们,谢谢!
答案 0 :(得分:2)
使用std
:
bool number1_result = std::any_of(std::begin(square_numbers),
std::end(square_numbers),
[&](auto e){ return number % e == 0; });
答案 1 :(得分:0)
问题是你要分配number1_result
哪个应该检查循环内部,而是你必须输入number1
:
cin >> number1_result; // redundant
答案:
int square_numbers[10] = { 4, 9, 25, 36, 49, 64, 81, 100, 121, 144 };
bool number1_result = false;
int number1;
cin >> number1;
for (int i = 0; i < 10; i++) {
if(number1 % square_numbers[i] == 0){
number1_result = true;
break;
}
}