I00010 列印1到輸入數之間的回文數

2021-07-11 15:50:15 字數 1195 閱讀 9519

對於乙個數,要判定它是否是回文數,直觀的做法是先判定其最高位(首位)與最低位(最後一位)是否相同,如果不同則不是回文數;如果相同則其掉其做高位和最低位,對剩餘的位繼續進行判定;如果剩餘的位只有一位或零位(即整個數是偶數字)則為回文數。

本程式就是基於這樣的基本思想進行計算的。

本程式通用性強,可以計算1到任意指定數之間的所有回文數。

計算回文數還可以用數字字元組合的方法來實現,演算法上採用回溯法。

程式如下:

/* 列印輸出1到輸入數之間的回文數 */

#include int ispalindrome(long, long);

int main(void)

printf("\n");

return 0;

}// 判斷n是否為回文數的函式

// 引數n為需要判斷是否為回文數的數

// 引數bigmod,若n為m位數,其值為10^m-1(10的m-1次方)

// 引數bigmod必須事先正確設定

int ispalindrome(long n, long bigmod)

// 如果只剩下1位或2位結束

if(bigmod <= 10)

break;

// 去掉最高位和最低位

n %= bigmod;

n /= 10;

bigmod /= 100;

}return flag;

}

關鍵**:

// 判斷n是否為回文數的函式

// 引數n為需要判斷是否為回文數的數

// 引數bigmod,若n為m位數,其值為10^m-1(10的m-1次方)

// 引數bigmod必須事先正確設定

int ispalindrome(long n, long bigmod)

// 如果只剩下1位或2位結束

if(bigmod <= 10)

break;

// 去掉最高位和最低位

n %= bigmod;

n /= 10;

bigmod /= 100;

}return flag;

}

輸入20000時,程式執行結果如下:

12 列印 1 到最大的 n 位數

題目 輸入數字 n,按順序列印出從 1 到 最大的 n 位十進位制數。比如輸入 3 則列印出 1 2 3 一直到最大的3位數即 999。解析 容易知道不能用 int 等數字型別表示 大數問題 關鍵點 1.如何用字串表示n位數?2.如何實現字串數的自增操作?3.如何列印乙個字串數?申請長度是n 1的字...

12 列印1到最大的n位數

輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,列印出1,2,3一直到最大的3位數即999.n的取值範圍可以很大,考慮大數問題。最常見的方法是用字串或者數字表達大數。把問題轉換成數字排列問題。思考 如何用字串儲存數字 如何在字串表達的數字上模擬加法 把字串表達是數字列印出來 incl...

17 列印從1到最大的n位數

輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 說明 題目要求列印 從1至最大的n位數的列表 因此需考慮以下兩個問題 最大的n位數 記為end 和位數n的關係 例如最大的1位...