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

来源:互联网 发布:daemontools linux 编辑:程序博客网 时间:2024/05/16 06:00

所有的有关于回文数的定义和如何判断一个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;}

下面是我的程序的运行结果:

这里写图片描述

0 0