鱼C论坛

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

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

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

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int i,j,max =0,temp = 0;
  5.         int result = 0;

  6.        
  7.         for (i = 100;i<=999;i++)
  8.         {
  9.                 for(j = 100;j<=999;j++)
  10.                 {
  11.                         result = i*j;
  12.                         while(result)
  13.                         {
  14.                                 temp = temp*10 + result%10;
  15.                                 result /= 10;
  16.                         }
  17.                        
  18.                         if (temp == result)
  19.                         {
  20.                                 if (temp>max)
  21.                                 {
  22.                                         max = temp;
  23.                                        
  24.                                 }
  25.                         }
  26.                         else
  27.                         {
  28.                                 continue;
  29.                         }
  30.                 }
  31.         }
  32.         printf("%d",max);
  33.         return 0;
  34. }
复制代码


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


那么if语句就无论如何也不会执行,所以max就不会改变
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


那么if语句就无论如何也不会执行,所以max就不会改变
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

哦哦哦,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯一起加油学习啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  2. int main()
  3. {
  4.         int i,j,max =0,temp = 0;
  5.         int result = 0;
  6.         int result_0 = 0;

  7.        
  8.         for (i = 100;i<=999;i++)
  9.         {
  10.                 for(j = 100;j<=999;j++)
  11.                 {
  12.                         result = i*j;
  13.                         result_0 = result;
  14.                         while(result)
  15.                         {
  16.                                 temp = temp*10 + result%10;
  17.                                 result /= 10;
  18.                         }
  19.                        
  20.                         if (temp == result_0)
  21.                         {
  22.                                 if (temp>max)
  23.                                 {
  24.                                         max = temp;
  25.                                        
  26.                                 }
  27.                         }
  28.                         else
  29.                         {
  30.                                 continue;
  31.                         }
  32.                 }
  33.         }
  34.         printf("%d",max);
  35.         return 0;
  36. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

得到回文输出的数啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好像是的,我自己脑袋混乱了。。。我还是重新写这个代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 23:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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