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

所有的有关于回文数的定义和如何判断一个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://my.oschina.net/u/1051345/blog/416938

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值