#include <stdio.h>
int comp(int i,char *a); /*判斷是否是回文數的函數*/
int main(void)
{ int i,j=1;
char a[12];
for(i=0;i<10000;i++)
{ if(comp(i,a))
{ printf("%-4d:%-11s ",i,a);j++; } /*顯示結果時,":"前面是10進制數,後面是對應的2進制數*/
if(!(j%5)) { j=1;printf("\n"); }; /*每五個數壹行,使得顯示更整齊*/
}
getch();
}
int comp(int i,char *a)
{ char b[12];
int j,k;
if(i==0) /*如果待判斷的數為0,則返回1(0是回文數)*/
{ a[0]='0';a[1]='\0';
return 1;
}
for(j=0;i!=0;i/=2) b[j++]='0'+i%2;
/*將i依次除以2,每次得到的余數存入數組b中(這樣得到的是逆序的2進制數)*/
b[j--]='\0'; /*字符串最後壹位置為'\0'*/
for(k=0;j>=0;k++,j--) a[k]=b[j]; /*倒轉b並存入a,得到正序的2進制數*/
a[k]='\0';
return !(strcmp(a,b)); /*返回兩數組的比較結果*/
}