/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数 */
#include<stdio.h>
#include<stdlib.h>int circle(int n, int d){int s=0,m=n;while(m){s=s*d+m%d;m/=d;}printf("s=%d\n",s);return s==n;
}
/* main函数用于测试circle函数 */
int num[]={232,27,851};
int scale[]={2,10,16};
main(){int i,j;system("cls");// clrscr();for(i=0;i<sizeof(num)/sizeof(num[0]);i++)for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)if(circle(num[i],scale[j]))printf("%d -> (%d) is a Circle Number!\n",num[i],scale[j]);elseprintf("%d -> (%d) is not a Circle Number!\n",num[i],scale[j]);printf("\n Press any key to quit...\n");getch();
}
其中以下代码为精华所在:
while(m)
{s=s*d+m%d;m/=d;
}
return s==n;
主要思想为把n倒序表示成s,最后判断n和s是否想等,相等即为回文数。