回文数C语言实现

什么是回文数呢?
例如:11、22、121、12321、258852等等,但还有个条件回文数非负,并且一位数都是回文数

代码如下

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

bool isft(int x)
{
    int n = 0; 
    
    if(x < 0)
        return false;
    if(x<10)
        return true;
        
    while(1)
    {
        n = n*10 + x%10;
        x /= 10;

			//如果倒序数已经大于此时x,表示不是回文数
			//判断x的个位是否为0,若为0,则不是回文数
		 if(n > x || n == 0)
            return false;
        //如果x的位数为奇数位多除一次10
        if(x/10 == n || x == n)
            return true;

    }
    
}

    
int main()
{
    int n;
    printf("plase input a number:");
    scanf("%d",&n);
    
    printf("%d",isft(n));
    return 0;
}

代码分析

上述代码用的是翻转x的后一半与前一半对比,如果相等则为回文数,反之不是。

假如有一个数:12321,结合上面代码

由于12321大于10,所以直接进到while死循环
第一次 n = n*10 + x%10得到n=1,x=1232,判断n是否大于x,或者x的个位数是否为0
若成立返回false,反之继续往下
接着判断x是否等于n(当x的位数为偶数时)或者x/10是否等于n(当x的位数为奇数时),若成立,
结束循环,反之继续执行while

第二次得到n=12,x=123,此时满足if(x/10 == n || x == n)
所以结束函数,并返回true

其他的数自行分析

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯大师~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值