鱼C论坛

 找回密码
 立即注册
查看: 1659|回复: 8

[已解决]新手的每日一问

[复制链接]
发表于 2019-3-1 22:14:30 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        int i,j,max =0,temp = 0;
        int result = 0;

        
        for (i = 100;i<=999;i++)
        {
                for(j = 100;j<=999;j++)
                {
                        result = i*j;
                        while(result)
                        {
                                temp = temp*10 + result%10;
                                result /= 10;
                        }
                        
                        if (temp == result)
                        {
                                if (temp>max)
                                {
                                        max = temp;
                                        
                                }
                        }
                        else
                        {
                                continue;
                        }
                }
        }
        printf("%d",max);
        return 0;
}

为什么我的max 结果始终都是0呢?,不能求出由两个 3 位数乘积构成的回文数
最佳答案
2019-3-1 22:22:19
while(result)
                        {
                                temp = temp*10 + result%10;
                                result /= 10;
                        }
                        //在这里,你的result已经是零了
                        if (temp == result)


那么if语句就无论如何也不会执行,所以max就不会改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-1 22:22:19 | 显示全部楼层    本楼为最佳答案   
while(result)
                        {
                                temp = temp*10 + result%10;
                                result /= 10;
                        }
                        //在这里,你的result已经是零了
                        if (temp == result)


那么if语句就无论如何也不会执行,所以max就不会改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-2 10:04:54 | 显示全部楼层
cookies945 发表于 2019-3-1 22:22
while(result)
                        {
                                temp = temp*10 + result%1 ...

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

使用道具 举报

发表于 2019-3-2 10:55:16 | 显示全部楼层

嗯一起加油学习啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-3 17:21:24 | 显示全部楼层
cookies945 发表于 2019-3-2 10:55
嗯一起加油学习啊

那为什么我增加了一个变量把result替换了之后结果还是等于0
#include <stdio.h>

int main()
{
        int i,j,max =0,temp = 0;
        int result = 0;
        int result_0 = 0;

        
        for (i = 100;i<=999;i++)
        {
                for(j = 100;j<=999;j++)
                {
                        result = i*j;
                        result_0 = result;
                        while(result)
                        {
                                temp = temp*10 + result%10;
                                result /= 10;
                        }
                        
                        if (temp == result_0)
                        {
                                if (temp>max)
                                {
                                        max = temp;
                                        
                                }
                        }
                        else
                        {
                                continue;
                        }
                }
        }
        printf("%d",max);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-3 17:44:52 | 显示全部楼层
楼主能不能解释一下 你这每一步的逻辑是干嘛 就单看这部分
            
while(result)
                        {
                                temp = temp*10 + result%10;  //这个temp的值 几次循环之后数值就会溢出 而且这个循环设计的意义是干什么?
                                result /= 10;
                        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-3 18:32:06 | 显示全部楼层
82457097 发表于 2019-3-3 17:44
楼主能不能解释一下 你这每一步的逻辑是干嘛 就单看这部分

我也没理解这步有什么用。。。你最终输出的max值是和temp值相同的,如果你程序的目的是为了求两个三位数乘积为回文数,那么temp值应该和一开始的result、值是一样的啊,可是你这步应该不可能使temp和一开始乘积的result值相同吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-3 19:17:16 | 显示全部楼层
润木 发表于 2019-3-3 18:32
我也没理解这步有什么用。。。你最终输出的max值是和temp值相同的,如果你程序的目的是为了求两个三位数 ...

得到回文输出的数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-3 19:24:21 | 显示全部楼层
润木 发表于 2019-3-3 18:32
我也没理解这步有什么用。。。你最终输出的max值是和temp值相同的,如果你程序的目的是为了求两个三位数 ...

好像是的,我自己脑袋混乱了。。。我还是重新写这个代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 10:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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