c - 输出的奇怪行为

标签 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); 
 }

它给出了 0。我无法理解为什么它给出了 0,我多次浏览代码,但我找不到任何问题,请在这里帮助我。

谢谢

最佳答案

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

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

关于c - 输出的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9191721/

相关文章:

c - 显示正确的输出后,正在打印不需要的输出

c - ifndef 问题,警告 [Pe014] : extra text after expected end of preprocessing directive

python - 将 C uint8_t 转换为 python utf_16_be

c - 在C语言中使用指针有什么好处?

c++ - 在 MBCS 项目中使用 unicode dll,反之亦然

c - 在 Android Studio 中添加 MATLAB CODER 生成的 C

c - 什么信号(SIGPIPE,SIG_IGN);做?

c - 如何使用 memcpy 将指针复制到数组元素

c - OpenMP - 初始化一维数组

无法在 GCC crunchbang 中编译 x86