所有的有關于回文數的定義和如何判斷一個n的d進制數是否是回文數的方法都在我的代碼注釋當中,直接上代碼:
~~~
#include <stdio.h>
int circle(int n,int d);
/**
* @brief main 判斷正整數n的d進制表示是否是回文數
* @return
*/
int main(void)
{
/**
* 回文數,就是順著看和倒著看相同的書,例如n=232,十進制書表示為232,
* 順著看和倒著看都是232,則表示n是回文數
* 判斷n的d進制表示是否是回文數有兩種辦法
* 1:先把n轉換成d進制表示,然后兩個指針從前向后和從后向前
* 同時運算,比較兩個char是否相等
*
* 2:先順序譯出n的d進制數,然后將各位數字按從低位到高位轉換成一個
* 整數,看和n是否相等
*
* 這里我們使用第二種方式
*/
int n; //要被判斷的正整數
//保存進制數
int ds[] = {2,10,16};
printf("Please enter the integer n:\n");
scanf("%d",&n);
int i = 0;
for(i = 0;i < sizeof(ds)/sizeof(ds[0]);i++){
int isCircle = circle(n,ds[i]);
if(isCircle == 0){
printf("%d => <%d>: is not circle!\n",n,ds[i]);
}else{
printf("%d => <%d>: is circle!\n",n,ds[i]);
}
}
return 0;
}
/**
* @brief circle 該函數用于判斷一個正整數n的
* d進制數是否是回文數
* @param n 被判斷的正整數n
* @param d 進制數
* @return 1-是回文數,0-不是回文數
*/
int circle(int n,int d){
int s = 0;
int m = n;
while(m){
s = s * d + m % d;
m /= d;
}
return s == n;
}
~~~
下面是我的程序的運行結果:

- 前言
- 實例一:HelloWorld
- scanf函數學習
- 實數比較
- sizeof()保留字獲取類型的大小
- 自增/自減學習
- C學習if條件判斷和for循環
- C實現的九九乘法表
- C實現一個比較簡單的猜數游戲
- 使用C模擬ATM練習switch..case用法
- 記錄一個班級的成績練習一維數組
- C數組實現矩陣的轉置
- C二維數組練習
- 利用數組求前n個質數
- C實現萬年歷
- C實現數組中元素的排序
- C實現任意進制數的轉化
- C判斷一個正整數n的d進制數是否是回文數
- C使用遞歸實現前N個元素的和
- 鋼材切割問題
- 使用指針比較整型數據的大小
- 指向數組的指針
- 尋找指定元素
- 尋找相同元素的指針
- 整數轉換成羅馬數字
- 字符替換
- 從鍵盤讀入實數
- C實現字符行排版
- C實現字符排列
- C實例--判斷一個字符串是否是回文數
- 通訊錄的輸入輸出
- 撲克牌的結構定義
- 使用“結構”統計學生成績
- 報數游戲
- 模擬社會關系
- 統計文件中字符個數
- C實現兩個文件的內容輸出到同一個屏幕