朋友们,我的目标是用C语言从数字1-99中找到带有奇数和的数字,并将它们打印在屏幕上。为了尝试,我缩小了范围,在代码中写了5而不是99。然而,有一个问题,这段代码,我认为它在我脑海中的逻辑中很好地工作,进入一个无休止的循环。我找不到该做什么。你觉得我怎么解决这个问题?
预期输出(考虑5而不是99):“数字和奇数:1数字和奇数: 3”
int main() {
int n, m, result, temp;
for (int i = 1; i < 5; i++) {
temp = i;
while (i > 0) {
m = i % 10;
result += m;
i = i / 10;
}
if (result % 2 != 0) {
printf("%d", temp);
}
}
}发布于 2021-12-11 19:23:54
在循环中使用i++,在循环中使用i = i / 10,而在循环中使用i是0。这意味着,i被困在了1的位置上。
对于数字迭代,您需要另一个变量,或者切换对i和temp的使用,以便只通过循环的增量来更改i:
int main()
{
int n, m, result, temp;
for(int i = 1; i < 5; i++)
{
result = 0;
temp = i;
while(temp>0)
{
m = temp % 10;
result += m;
temp = temp / 10;
}
if (result %2!=0)
{
printf("%d", i);
}
}
return 0;
}编辑:我也没有注意到,您忘记了用初始值初始化result,因此基本上一直在添加垃圾值。您应该在每次迭代中使用0初始化它。
发布于 2021-12-11 19:26:00
您可以在i中复制temp。
但是,您不需要在内环中使用temp和操作i。
坚持你的初始计划,只在内部循环中使用temp。
您可能还希望在某个时候插入/重置result。
发布于 2021-12-11 19:26:40
您需要在i循环之后重置while的值。如公告所示,i的值在while循环之后为零。
https://stackoverflow.com/questions/70318265
复制相似问题