鱼C论坛

 找回密码
 立即注册
查看: 2329|回复: 9

[已解决]关于while语句的问题

[复制链接]
发表于 2023-2-16 21:38:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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;
}
最佳答案
2023-2-16 21:56:25
注意观察 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-16 21:38:36 | 显示全部楼层
本帖最后由 1613551 于 2023-2-16 21:39 编辑

不应该是22吗,x等于20和等于10的时候,%2会等于0,然后会打印i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-16 21:56:25 | 显示全部楼层    本楼为最佳答案   
注意观察 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;
}

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-16 21:56:37 | 显示全部楼层
本帖最后由 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
         

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-17 07:25:37 | 显示全部楼层
打印的是这个数某些的因数,而不是所有因数,因为你想想,每个数字只会出现一次

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-17 08:28:49 | 显示全部楼层
x/=i,x在不断变小;i++,i在不断变大;只在20%2和10%5两处满足条件

评分

参与人数 1荣誉 +4 鱼币 +1 贡献 +3 收起 理由
1613551 + 4 + 1 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-17 10:26:05 | 显示全部楼层
1613551 发表于 2023-2-16 21:38
不应该是22吗,x等于20和等于10的时候,%2会等于0,然后会打印i


过程并没有对i重置过,后面都在 i++, i = 2的时候有且仅有一次(就是第一次循环),不可能打印出22
你打上去的代码和你预期的逻辑不一样

评分

参与人数 1荣誉 +4 鱼币 +1 贡献 +3 收起 理由
1613551 + 4 + 1 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-17 16:27:14 | 显示全部楼层
学习一下

评分

参与人数 1荣誉 +1 贡献 +3 收起 理由
1613551 + 1 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-18 10:36:08 | 显示全部楼层

看看能否领到鱼币

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 14:42:46 | 显示全部楼层

回帖奖励 +1 鱼币

谢谢楼主的荣誉以及贡献

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 19:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表