鱼C论坛

 找回密码
 立即注册
查看: 1577|回复: 7

[已解决]第一阶段考核找出最大的回文数,并且是由两个三位数相乘

[复制链接]
发表于 2019-7-23 11:17:19 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 坦然自若 于 2019-7-23 11:19 编辑

#include <stdio.h>

int main()

{
        int i, j, target, invert, num;   //i是较大的那个三位数,j是较小的三位数
        for (i = 999; i >= 100; i--)   
        {
                for (j = 999; j >= 100; j--)
                {
                        //求倒置数
                        target = i * j;
                        num = target;
                        invert = 0;
                        while (target)
                        {
                                invert = invert + target % 10;
                                target /= 10;
                        }                                            
                        if (num == invert)                           //如果倒置数和原数一样用goto语句跳出循环
                        {
                                goto findit;
                        }
                }


        }
findit: printf("%d*%d=%d\n", i, j, num);

        return 0;
}


不知道哪里错了,恳请哪位大神帮忙
最佳答案
2019-7-23 11:17:20
本帖最后由 一木之禾 于 2019-7-23 11:44 编辑

我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10来达到移位。
其次,根据修改过上面这个问题之后的程序的结果来看,答案还是不对,原因是原数末尾可能是0,倒置之后再判断是否回文就显然不对了。至于怎么判断回文,你再思考思考。
另外,以后提问还是应该把代码放在代码框里,注意代码规范。
while(target){
                invert = invert +target % 10;
                invert = invert*10;
                target /=10;
        }

最佳答案

查看完整内容

我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10来达到移位。 其次,根据修改过上面这个问题之后的程序的结果来看,答案还是不对,原因是原数末尾可能是0,倒置之后再判断是否回文就显然不对了。至于怎么判断回文,你再思考思考。 另外,以后提问还是应该把代码放在代码框里,注意代码规范。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-23 11:17:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 一木之禾 于 2019-7-23 11:44 编辑

我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10来达到移位。
其次,根据修改过上面这个问题之后的程序的结果来看,答案还是不对,原因是原数末尾可能是0,倒置之后再判断是否回文就显然不对了。至于怎么判断回文,你再思考思考。
另外,以后提问还是应该把代码放在代码框里,注意代码规范。
while(target){
                invert = invert +target % 10;
                invert = invert*10;
                target /=10;
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-23 11:17:57 | 显示全部楼层
求哪位大神帮忙    please~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-23 11:56:03 | 显示全部楼层
感谢大神,又是您啊,非常感谢,对了大神怎么发代码呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-23 12:09:25 | 显示全部楼层
一木之禾 发表于 2019-7-23 11:17
我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10 ...

while(target){
                invert = invert * 10;
                invert = invert + target % 10;
                target /=10;
        }
大神我懂了,先乘10,可是这样也得不出正确结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-23 12:16:06 | 显示全部楼层
本帖最后由 坦然自若 于 2019-7-23 12:18 编辑
一木之禾 发表于 2019-7-23 11:17
我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10 ...


大神我终于懂了,原来我这种是两个三位数其中一个为最大(可能比正确结果还大),另一个不能保证为最大(可能比正确结果小),这样求出的回文数不一定为最大。只能先找回文数,在确定它是否是两个三位数相乘
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-23 14:34:59 | 显示全部楼层
坦然自若 发表于 2019-7-23 11:56
感谢大神,又是您啊,非常感谢,对了大神怎么发代码呢

编辑框那里有个和长得这个<>样子的符号,点一下,出来个弹框,代码直接粘进去就好了。
啊哈哈,我也就能解决点基本点的c的问题了,C也没学太深,计科专业学生党
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-23 15:41:50 | 显示全部楼层
一木之禾 发表于 2019-7-23 14:34
编辑框那里有个和长得这个样子的符号,点一下,出来个弹框,代码直接粘进去就好了。
啊哈哈,我也就能解 ...

ok,谢谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 01:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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