找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1264|回复: 8
打印 上一主题 下一主题
收起左侧

我不理解我这个C语言代码为什么输不出,应该怎么改?

[复制链接]
跳转到指定楼层
楼主
#include<stdio.h>
int main()
{
int i=10000,a,b=0,c;
for(i=10000;i<=100000;i++)
{
        a=i;
        while(i!=0)
        {
                c=i%10;
      b=b*10+c;
          i/=10;
        }
if(a==b)
                printf("%d\n",a);
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:442990 发表于 2021-10-21 07:46 | 只看该作者
i 的最小值是10000,i++,所以i永远不会等于零,所以一直在while内死循环,所以没有输出
回复

使用道具 举报

板凳
ID:882573 发表于 2021-10-21 09:24 | 只看该作者
矛盾了,for(i=10000;i>=0;i--)
回复

使用道具 举报

地板
ID:429003 发表于 2021-10-21 09:30 | 只看该作者
while循环内,你修改了i的值,只有i==0才能跳出。除了第一次for循环每次进入while循环时始终i==1,a ==b 始终不能成立!
回复

使用道具 举报

5#
ID:139866 发表于 2021-10-21 10:31 | 只看该作者
我添加了代码即时打印各个参数的值,i在取余10之后经过while循环出来成了0,接着i+1,C等于i,这样走i就会一直等于0,a和C的值在i+1之后一直是1,B是无限增大的,最高位一直是1,又因为是int,所以最后成了负数,ab永远不可能相等,而且因为i的值一直在0和1直接变化,走不出这个for循环

51hei截图_20211021101459.png (56.77 KB, 下载次数: 22)

51hei截图_20211021101459.png

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:139866 发表于 2021-10-21 10:32 | 只看该作者
我添加了代码即时打印各个参数的值,i在取余10之后经过while循环出来成了0,接着i+1,C等于i,这样走i就会一直等于0,a和C的值在i+1之后一直是1,B是无限增大的,最高位一直是1,又因为是int,所以最后成了负数,ab永远不可能相等,而且因为i的值一直在0和1走不出这个for循环

51hei截图_20211021100352.png (58.84 KB, 下载次数: 35)

51hei截图_20211021100352.png

51hei截图_20211021101459.png (56.77 KB, 下载次数: 38)

51hei截图_20211021101459.png

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:976455 发表于 2021-10-31 17:32 | 只看该作者

#include<stdio.h>
int main()
{
    int i=10000,a,b=0,c;
    int co = 0;
    for(i=10000;i<=100000;i++)
    {
       // printf("%d\n", i);
        a=i; //a=10000
        while(i!=0)
        {
            c=i%10;   //i=10000,c=
            b=b*10+c; //b=0
            i/=10;
            //while中 i的变化 10000->1000->100->10->1->0 结束循环 此时a=10000 b=1 c=1 i=0 a==b不成立
            //for循环继续 但是此时i=1 经过while后 a=1 c=1 b=2 i=0 由此可见i每次都会回到0,然后a=1,但是b是一个累加的过程,
            //所以a==b永不成立,而且i<=100000恒成立,陷入死循环,所以无输出
        }
        if(a==b)
            printf("%d\n",a);
    }
}

回复

使用道具 举报

8#
ID:881546 发表于 2021-11-3 21:52 | 只看该作者
jhz931920 发表于 2021-10-21 07:46
i 的最小值是10000,i++,所以i永远不会等于零,所以一直在while内死循环,所以没有输出

知道了
回复

使用道具 举报

9#
ID:881546 发表于 2021-11-3 21:53 | 只看该作者
谢谢各位
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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