C判断一个正整数n的d进制数是否是回文数

最后更新于:2022-04-01 14:28:35

所有的有关于回文数的定义和如何判断一个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; } ~~~ 下面是我的程序的运行结果: ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-24_5743c07505afa.jpg "")
';