输出的奇怪行为

时间:2012-02-08 10:41:42

标签: c

我完全陷入困境,在此代码中,此代码旨在  查找由两个3位数字的乘积制成的最大回文。 我有书面代码:

 #include <stdio.h>
void main ()
{
  unsigned long long int mul = 1, temp = 0, reverse = 0, pelindromenum=0;
  int i, j;
   for (i=100;i <=999;i++)
   {
     for(j=i;j<=999;j++)
     {
       mul = i*j;
       temp = mul;
         while (temp != 0)
         {
          reverse = reverse * 10;
          reverse = reverse + temp%10;
          temp = temp/10;
         }
         if (reverse == mul)
         {
           if (pelindromenum <= mul)
        {
            pelindromenum = mul;
            }
         } 
       }  
    }
   printf ("%llu", pelindromenum); 
 }

它给了outut 0.我无法理解为什么它给0,我经历了很多次代码但是我找不到任何问题请帮帮我。

由于

4 个答案:

答案 0 :(得分:1)

在计算完第一个后,你永远不会将reverse重置为0,所以你永远不会发现任何回文。

答案 1 :(得分:1)

您没有在循环中重置reverse。所以在第一次迭代后它就是垃圾。

reverse = 0;阻止之前添加while (temp!=0)

答案 2 :(得分:0)

你在代码中间乘以0,就是这样。

答案 3 :(得分:0)

此外,您实际上并未将pelindromenum初始化为零。

unsigned long long int mul = 1, temp = 0, reverse = 0, pelindromenum;=0