判断一个正整数是否为回文数

时间:2025-02-09 10:42:12

     首先什么是回文数呢?所谓回文数就是从左往右读和从右往左读是一样的,比如1221,222等等。

     为了大家更好了解,在看回文数之前我们先来看一个这样的问题:

     从键盘输入任意一个正整数,编程计算这个正整数每一位数字相加之和。例如输入1234,先分离出1,2,3,4,然后再计算1+2+3+4=10,并输出10。

我们首先想的肯定是如何把这个整数的每个数字都分离出来,那么怎么分离呢?对给定已知长度的整数的分离想必大家都会,但是从键盘输入任意整数的分离呢?这就得用循环来做啦。

#include <>
int main()
{
    int n;
    int sum=0;
    int temp;
    scanf("%d", &n);//从键盘读入一个正整数
    while(n!=0){
        temp=n%10;//先把n的个位分离放在temp里面
        sum+=temp;//把分离出来的那一位加进去
        n/=10;//因为n的最小的那一位已经加进去了,所以n除以十,把最小的那一位去掉,再进行新的循环
    }
    printf("%d",sum);
    return 0;
}

循环结束条件为什么是n=0呢?大家想想n/=10是不是只有当n只剩下一个数的时候,而在n/=10;之前已经把它分离出来加到sum里了,所以这时候可以退出循环了,大家可以把1234代进循环里走一遍试试。

 

现在我们初步了解了如何分离任意正整数的各位数字就可以来写判断回文数的代码了。

代码如下:

#include <>
int main()
{
    int n,sum=0,b;
    scanf("%d", &n);
    int temp=n;//因为循环需要对n的值进行改变,但是后面还要用到n的值,所以这里把赋值给一个中间变量
    while(temp!=0){
        b=temp%10;//分离出n的最低位
        sum=sum*10+b;//通过分离出的每一位进行叠加,循环结束后可以得到一个从右往左读的数,即倒置的数
        temp/=10;
    }
    if(sum==n)//通过倒置的数和原来的数对比大小,若相等则是回文数,输出YES
        printf("YES");
    else
        printf("NO");
    return 0;
}