【发布时间】:2019-07-31 07:35:50
【问题描述】:
我正在尝试编写一个程序来查找具有以下条件的特定 4 位数字:
- 所有四个数字都不同。
- 千位数字是十位数字的三倍。
- 数字是奇数。
- 数字之和为 27。
我正在努力编写这个程序。我尝试嵌套 for 循环迭代每个数字,直到满足条件(当 break 终止循环时),如下所示:
int a = 1;
int b = 1;
int c = 1;
int d = 1;
for (a = 1; a < 9; a++) {
for (b = 1; b < 9; b++) {
for (c = 1; c < 9; c++) {
for (d = 1; d < 9; d++) {
if (a + b + c + d == 27 && a == 3 * c && a != b && a != c
&& a != d && b!= c && b != d && c != d && d % 2 != 0) {
break;
}
}
}
}
}
我希望数字 a、b、c、d 为我提供满足上述 if 语句中的所有条件并因此中断的数字。相反,abcd 始终为 9999。为什么会发生这种情况?我怎么会误用break?
【问题讨论】:
-
你的条件是错误的,你永远不会在 4 位数字之外建立一个数字。
-
创建一个包含这个
for循环的函数并使用return而不是break -
我建议将你的 if 语句分解成嵌套的 if 语句:
if(condition1){ if(condition2){ if(condition3){. . .} } },以便调试更容易。 -
您只考虑了 10 个可能数字中的 8 个
标签: c++