题目

判断 n 是否为回文整数

思路

本题判断整数 n 正读反读是否相同(回文数)。

复制 nt,循环里用 rev = rev*10 + t%10 构造反转数,同时 t /= 10 去掉末位;循环结束后比较 rev == n。一般约定只练非负整数。

解题分析

回文整数正反读相同。可以把数反转再比较,也可以只反转右半部分与左半比较(位数为偶时),小数据下完整反转足够。

完整程序

#include <stdio.h>

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1 || n < 0) {
        return 1;
    }
    int orig = n, rev = 0;
    while (n) {
        rev = rev * 10 + n % 10;
        n /= 10;
    }
    printf("%s\n", rev == orig ? "yes" : "no");
    return 0;
}

运行示例

输入:

12321

输出:

yes

其它写法

下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。

反转整数再比较

程序:

#include <stdio.h>

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1 || n < 0) {
        return 1;
    }
    int orig = n, rev = 0;
    while (n) {
        rev = rev * 10 + n % 10;
        n /= 10;
    }
    printf("%s\n", rev == orig ? "yes" : "no");
    return 0;
}

运行示例

输入:

12321

输出:

yes