C語言例項解析精粹學習筆記——19

llccbb1發表於2018-09-01

例項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] = `

相關文章