水吉雨文 发表于 2021-12-4 22:02:48

求助回文数程序出错

#include <stdio.h>
#include <stdlib.h>
int main()
{

    int a,b,j,sum,temp;

    sum=0;

    for(i=998001;i>=10000;i--) //从998001到10000依个判断是否为回文数
    {
      for(j=i;j;j/=10)
      {
            temp=j%10;
            sum=sum*10+temp; //求这个数的倒数
      }
      
      if(sum==i) //若倒数与原数相等,则为回文数
      {
            for(a=100;a<=999;a++) //求两个三位数,并且这两个三位数相乘等于回文数
            {
                for(b=100;b<=999;b++)
                {
                  if(a*b==sum)
                  {
                        printf("%d*%d=%d",a,b,sum);
                        goto END;
                  }
                }
            }
            
      }
    }
END:
    return 0;
}

本意是打印两个三位数,并且这两个三位数相乘恰好等于回文数,就是小甲鱼第一阶段考核的最后一个题。
但是,程序一运行就结束了,我看代码好像没问题啊,求大佬们帮忙看看。

jackz007 发表于 2021-12-4 22:04:52

#include <stdio.h>

int main(void)
{
      inti , n , t                                       ;
      scanf("%d" , & n)                                    ;
      for(t = n , i = 0 ; t ; t /= 10) i = i * 10 + t % 10 ;
      if(i == n) printf("yes\n")                           ;
      else printf("no\n")                                  ;
}
       编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
12345678
no

D:\00.Excise\C>x
123454321
yes

D:\00.Excise\C>x
1234554321
yes

D:\00.Excise\C>

傻眼貓咪 发表于 2021-12-4 22:32:05

#include <stdio.h>
#include <stdbool.h>

bool isPalindrome(int num){
    int i, t;
    for(t = num, i = 0; t; t /= 10) i = i * 10 + t % 10;
    return i == num;
}

int main(void){
    for(int n = 998001; n > 10000; n--) if(isPalindrome(n)) printf("%d\n", n);
}
页: [1]
查看完整版本: 求助回文数程序出错