关于while语句的问题
本帖最后由 1613551 于 2023-2-16 21:40 编辑最后为什么会打印25呢?i等于5的时候不应该进不了while循环吗?我一直没弄懂while循环
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x = 20;
int i = 2;
while (i < x)
{
if (x % i == 0)
{
printf("%d", i);
x /= i;
}
i++;
}
system("pause");
return 0;
} 本帖最后由 1613551 于 2023-2-16 21:39 编辑
不应该是22吗,x等于20和等于10的时候,%2会等于0,然后会打印i 注意观察 x 和 i的值。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x = 20;
int i = 2;
while (i < x)
{
if (x % i == 0)
{
x /= i;
printf("i=%d, x=%d\n", i,x);
}
i++;
printf("i=%d\n", i);
}
system("pause");
return 0;
} 本帖最后由 jackz007 于 2023-2-16 22:07 编辑
x = 20 ,i = 2 :x % i = 0 ,打印 i = 2 ,x = x / i = 20 / 2 = 10 , i = i + 1 = 2 + 1 = 3
x = 10 ,i = 3 :x % i = 1 ,i = i + 1 = 3 + 1 = 4
x = 10 ,i = 4 :x % i = 2 ,i = i + 1 = 4 + 1 = 5
x = 10 ,i = 5 :x % i = 0 ,打印 i = 5,x = x / i = 10 / 5 = 2 ,i = i + 1 = 5 + 1 = 6
x = 2 ,i = 6 :条件 i < x 不再成立,循环结束。
所以,最终打印出的数字是 25
打印的是这个数某些的因数,而不是所有因数,因为你想想,每个数字只会出现一次 x/=i,x在不断变小;i++,i在不断变大;只在20%2和10%5两处满足条件 1613551 发表于 2023-2-16 21:38
不应该是22吗,x等于20和等于10的时候,%2会等于0,然后会打印i
过程并没有对i重置过,后面都在 i++, i = 2的时候有且仅有一次(就是第一次循环),不可能打印出22
你打上去的代码和你预期的逻辑不一样 学习一下 {:10_256:}{:10_256:}
看看能否领到鱼币 谢谢楼主的荣誉以及贡献{:10_279:}
页:
[1]