【发布时间】:2016-11-15 11:00:05
【问题描述】:
我希望在控制台中写入总和为 9 的所有 3 位数字。 到目前为止,这是我想出的,但它不起作用:
class Program
{
static void Main(string[] args)
{
int sum = 0;
for (int n = 100; n < 1000; n++)
{
while (n <1000)
{
sum += n % 10;
n /= 10;
if (sum == 9)
Console.WriteLine(sum);
}
}
}
}
【问题讨论】:
-
嗯,你正在使用
sum += n % 10;这意味着一旦sum == 9为真,它就永远不会再次为真,因为总和只会不断上升。您可能希望在每次迭代结束时将其重置为 0。这可以通过直接设置它的值而不是递增来完成 -sum = n % 10;或者在你的条件之后使用sum = 0; -
这很容易解决,我敢肯定,如果您花几分钟逐步调试变量,您会发现问题
-
@AlfieGoodacre 是正确的,但还有更多; sum 从 0 开始,但在第一个 while 循环之后,sum = 10。然后你减少 for 的计数器,使其 = 10。下一个循环,sum = 11,n 变为 1。你的 while 永远不会退出
-
两种方法都试过了还是不行
-
看看你的代码 - 你在外部 for 循环中将 n 初始化为 100,然后在内部 while 循环中你不断除以 10 - 所以它会一直卡在无限循环中