鱼C论坛

 找回密码
 立即注册
查看: 849|回复: 2

[已解决]求助回文数程序出错

[复制链接]
发表于 2021-12-4 22:02:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}

本意是打印两个三位数,并且这两个三位数相乘恰好等于回文数,就是小甲鱼第一阶段考核的最后一个题。
但是,程序一运行就结束了,我看代码好像没问题啊,求大佬们帮忙看看。
最佳答案
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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-4 22:04:52 | 显示全部楼层
#include <stdio.h>

int main(void)
{
        int  i , 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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 05:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表