C程序检查3位数的最大回文数

时间:2016-03-21 04:00:17

标签: c

  1. 任何人都可以帮我找到为什么这行(请看代码)没有执行?
  2. 我试图找到3位数的最大回文数。
  3. #include <stdio.h>
    
    int main()
    {
        long int n, reverse=0, rem,temp,  max_palindrom = -1;
        int i, j;
    
        for (i = 100; i <= 999; i++)
        {
    
            for (j = 100; j <= 999; j++)
            {
                n = 1*j;
    
                temp=n;
                while(temp!=0)
                {
                    rem=temp%10;
                    reverse=reverse*10+rem;
                    temp/=10;
                }
    
                if(reverse==n)
                {
    
                    printf("DDDDD");   //  < === not executing 
    
                }
    
            }
        }
    
        printf("%d ", max_palindrom);
        return 0;
    }
    

2 个答案:

答案 0 :(得分:0)

尝试新号码时,您没有将reverse重置为零。因此,在整个程序的过程中不断添加数字,从不使它等于回文。

尝试在第二个循环中重新初始化它,如下所示:

for (j = 100; j <= 999; j++)
{
    reverse = 0;
    ...

您的代码还存在其他问题,但您最终会找到这些问题。

答案 1 :(得分:0)

正如junjanes所说,你需要重置反向变量。为什么你使用两个for loop就足够了。

供参考,请参阅此修改后的内容。

#include <stdio.h>

int main()
{
int n, reverse=0, rem,temp,  max_palindrom = -1;
int i, j; 

for (j = 100; j <= 999; j++)
{
   n=j;
  temp=n;
  while(temp!=0)
  {
     rem=temp%10;
     reverse=reverse*10+rem;
     temp/=10;
  }
  if(reverse==n)
  {

     printf("DDDDD");   //  < === not executing 

   printf("%d\n", reverse);
  }
  if(max_palindrom<reverse)
  {
     max_palindrom=reverse;
  }
  reverse=0;
  }

   printf("%d ", max_palindrom);
  return 0;
 }