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

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45284563 所有的有关...
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45284563

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

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

这里写图片描述

目录
相关文章
|
8月前
|
Python
如果一个n位正整数等于其各位数字的n次方之和
如果一个n位正整数等于其各位数字的n次方之和
|
2月前
判断一个数是否为回文数
【10月更文挑战第23天】判断一个数是否为回文数。
52 4
|
4月前
|
C语言 Python
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
249 2
|
8月前
|
机器学习/深度学习
判断一个数字是否是2的N次方
判断一个数字是否是2的N次方
71 0
|
8月前
回文数的个数
回文数的个数
|
8月前
[leetcode 数位计算]2520. 统计能整除数字的位数
[leetcode 数位计算]2520. 统计能整除数字的位数
|
算法 Python
回文数中各位数和与输入数相同
回文数中各位数和与输入数相同
67 0
|
算法
判断一个数是否能被3或5整除
判断一个数是否能被3或5整除
171 0
|
Python
判断一个数能否同时被4和5整除
判断一个数能否同时被4和5整除
96 0
|
机器学习/深度学习 人工智能 算法
能被整除的数
能被整除的数
能被整除的数