所有的有关于回文数的定义和如何判断一个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://box.kancloud.cn/2016-05-24_5743c07505afa.jpg "")
- 前言
- 实例一:HelloWorld
- scanf函数学习
- 实数比较
- sizeof()保留字获取类型的大小
- 自增/自减学习
- C学习if条件判断和for循环
- C实现的九九乘法表
- C实现一个比较简单的猜数游戏
- 使用C模拟ATM练习switch..case用法
- 记录一个班级的成绩练习一维数组
- C数组实现矩阵的转置
- C二维数组练习
- 利用数组求前n个质数
- C实现万年历
- C实现数组中元素的排序
- C实现任意进制数的转化
- C判断一个正整数n的d进制数是否是回文数
- C使用递归实现前N个元素的和
- 钢材切割问题
- 使用指针比较整型数据的大小
- 指向数组的指针
- 寻找指定元素
- 寻找相同元素的指针
- 整数转换成罗马数字
- 字符替换
- 从键盘读入实数
- C实现字符行排版
- C实现字符排列
- C实例--判断一个字符串是否是回文数
- 通讯录的输入输出
- 扑克牌的结构定义
- 使用“结构”统计学生成绩
- 报数游戏
- 模拟社会关系
- 统计文件中字符个数
- C实现两个文件的内容输出到同一个屏幕