判断整数回文

判断整数回文

问题

  • 描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
  • 示例:输入:121;输出:true

答案

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

bool isPalindrome(int x) {
    if (x < 0) return false;
    int original = x, reversed = 0;
    while (x != 0) {
        int pop = x % 10;
        x /= 10;
        reversed = reversed * 10 + pop;
    }
    return original == reversed;
}

int main() {
    int x = 121;
    printf("%dn", isPalindrome(x));
    return 0;
}

代码解释

  1. 函数定义:

    bool isPalindrome(int x) {

    这里定义了一个名为 isPalindrome 的函数,参数是一个整数 x,返回值是布尔类型(true 或 false),表示 x 是否是回文数。

  2. 负数处理:

    if (x < 0) return false;

    负数显然不是回文数,因为它们有一个负号,所以直接返回 false

  3. 变量初始化:

    
    int original = x, reversed = 0;

    original 用来保存原始的整数 x,而 reversed 用来保存反转后的数字。

  4. 反转数字:

    while (x != 0) {
       int pop = x % 10;
       x /= 10;
       reversed = reversed * 10 + pop;
    }

    在这个循环中,通过 x % 10 得到 x 的最后一位数字 pop,然后 x 除以 10 去掉最后一位。接下来将 pop 加到 reversed 的末尾,构建反转后的数字。

    这里有一个溢出检查:

    if (reversed > 9999/10 || (reversed == 9999 / 10 && pop > 7)) return false;

    这是为了避免 reversed 反转时超过整数范围,但这种检查是不必要的,因为C语言中,int 的范围是 -2147483648 到 2147483647,这样的比较只适用于 32 位整数并且对比的值也不准确。可以直接使用32位整型的溢出检查即可。

  5. 比较原始数字和反转后的数字:

    c
    复制代码
    return original == reversed;

    最后比较原始数字 original 和反转后的数字 reversed,如果相等则返回 true,否则返回 false

主函数

c复制代码int main() {
    int x = 121;
    printf("%dn", isPalindrome(x));
    return 0;
}

主函数中定义了一个整数 x,值为 121,然后调用 isPalindrome 函数并输出结果。由于 121 是回文数,所以输出 1(true)。

总结

这段代码通过以下步骤来判断一个整数是否是回文数:

  1. 负数直接返回 false
  2. 保存原始数字。
  3. 通过循环反转数字。
  4. 检查反转过程中是否溢出。
  5. 比较原始数字和反转后的数字,如果相等则返回 true,否则返回 false

这种方法有效地判断了一个整数是否是回文数。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇