首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

迴文數判斷:位元運算與數學解法完整指南

     編輯:關於C語言

問題定義

輸入一個 5 位整數,判斷是否為迴文數(個位=萬位,十位=千位)。

數學解法

#include <stdio.h>

int main(void) {
    int num;
    do {
        printf("請輸入 5 位整數 (10000~99999):");
        scanf("%d", &num);
        if (num < 10000) puts("太小,請重新輸入");
        else if (num > 99999) puts("太大,請重新輸入");
    } while (num < 10000 || num > 99999);

    int d1 = num / 10000;        // 萬位
    int d2 = num / 1000 % 10;    // 千位
    int d4 = num % 100 / 10;     // 十位
    int d5 = num % 10;           // 個位

    if (d1 == d5 && d2 == d4)
        puts("Yes, 它是迴文數!");
    else
        puts("No, 它不是迴文數。");

    return 0;
}

通用化:任意長度迴文判斷

bool is_palindrome(int n) {
    if (n < 0) return false;
    int original = n, reversed = 0;
    while (n > 0) {
        reversed = reversed * 10 + n % 10;
        n /= 10;
    }
    return original == reversed;
}

字串解法(支援超大整數)

bool is_palindrome_str(const char *s) {
    int len = strlen(s);
    for (int i = 0; i < len / 2; ++i)
        if (s[i] != s[len - 1 - i]) return false;
    return true;
}

圖示說明

迴文數判斷流程圖

複雜度對比

方法時間空間適用範圍
位元數學O(log₁₀ n)O(1)int/long long 範圍內
字串反轉O(d)O(d)任意長度、大整數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved