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

C語言找出 10000 以內所有迴文數 (回文數判斷演算法)

     編輯:關於C

迴文數(回文數)指正反讀相同的數字,如 121、1331。程式遍歷 2~9999,將每個數分解為位數陣列,再對稱比較判斷是否為迴文數。isPalindrome() 函式回傳 1 表示是迴文數。

判斷邏輯

  1. 數字 < 10 直接回傳 0(單位數不視為迴文)。
  2. 將各位數字存入陣列 a[](個位在前)。
  3. 雙指標或反向遍歷比較 a[j] 與原數對應位數。
  4. 全符合回傳 1,否則 0。

程式碼

#include <stdio.h>

int isPalindrome(int m);

int main() {
    for (int i = 2; i < 10000; i++)
        if (isPalindrome(i))
            printf("是迴文數:%d\n", i);
    return 0;
}

int isPalindrome(int m) {
    if (m < 10) return 0;
    int a[5], i=0, num=m;
    while (m) { a[i++] = m%10; m/=10; }
    for (int j=i-1; j>=0; j--)
        if (a[j] != num%10) return 0;
        else num/=10;
    return 1;
}

部分輸出

優化提示

可直接將數字轉字串比較,或數學方法反轉數字比較 rev == orig,更簡潔高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved