例項19:判斷正整數n的d進製表示形式是否是迴文數(順著看和倒著看相同的數)。
主要思路:
一種方法:將正整數n數轉換成d進位制的數,逐個比較首尾對應數字,判斷是否為迴文數。
另一種方法:將正整數n數轉換成d進位制的數,將低位數當做高位數,轉換成正整數判斷與原來的數是否相等。
書中採用的是第二種方法,下面的程式中與例項18相結合,例項18中對無符號整數進行轉換,但是在實際的程式設計中從結果上看沒有太大的區別。
(程式碼與書中程式碼有一定出入)
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define M sizeof(unsigned int)*8 5 6 /*例項18中主要用到的函式,將無符號整數轉換成d進位制數*/ 7 int Trans(unsigned n, int d, char s[]) 8 { 9 static char digits[] = "0123456789ABCDEF"; 10 char buf[M+1]; 11 int i, j = M; 12 13 if(d<2 || d>16) 14 { 15 s[0] = `