负数零 发表于 2021-10-12 09:17:44

关于阶段考核题第三题的疑问

小甲鱼的第三题要求我们找出最大的有由两个三位数乘积构成的回文数,为什么定义turn(回文数)= 0的位置不同,结果也不同呢?
#include<stdio.h>
int main()
{
        int num1,turn,result=998001,target;
       
        for(;result>10000;result--)
        {
                turn=0;
                target = result;
          while(target)
          {               
                turn=turn*10+target%10;
                target=target/10;
      }
      if(turn==result)
      {
              for(num1=100;num1<1000;num1++)
              {
                      if(!(result % num1) && (result / num1 >= 100) && (result / num1 < 1000))
                      {
                                      goto A;             
                                }
                        }
               
                }
    }
    A:printf("结果是%d\n", result);       
        return 0;
}
这样结果是正确的906699。
#include<stdio.h>
int main()
{
        int num1,result=998001,target;
        int turn=0;
       
        for(;result>10000;result--)
        {
                target = result;
          while(target)
          {               
                turn=turn*10+target%10;
                target=target/10;
      }
      if(turn==result)
      {
              for(num1=100;num1<1000;num1++)
              {
                      if(!(result % num1) && (result / num1 >= 100) && (result / num1 < 1000))
                      {
                                      goto A;             
                                }
                        }
               
                }
    }
    A:printf("结果是%d\n", result);       
        return 0;
}
这样答案就变成10000了。

大马强 发表于 2021-10-12 10:02:11

最直接的区别就是前者每次再中的值是0,而后者却是为turn=turn*10+target%10;
你跟着循环过两遍就大概知道了,比如说循环两次
         第一次   第二次
前者   0               0      ....直到最后一次跳出
后者   0               1
页: [1]
查看完整版本: 关于阶段考核题第三题的疑问