实例19:判断正整数n的d进制表示形式是否是回文数(顺着看和倒着看相同的数)。

主要思路:

一种方法:将正整数n数转换成d进制的数,逐个比较首尾对应数字,判断是否为回文数。

另一种方法:将正整数n数转换成d进制的数,将低位数当做高位数,转换成正整数判断与原来的数是否相等。

书中采用的是第二种方法,下面的程序中与实例18相结合,实例18中对无符号整数进行转换,但是在实际的编程中从结果上看没有太大的区别。

(代码与书中代码有一定出入)

 #include <stdio.h>
#include <stdlib.h> #define M sizeof(unsigned int)*8 /*实例18中主要用到的函数,将无符号整数转换成d进制数*/
int Trans(unsigned n, int d, char s[])
{
static char digits[] = "0123456789ABCDEF";
char buf[M+];
int i, j = M; if(d< || d>)
{
s[] = '\0';
return ;
} buf[i] = '\0';
do
{
buf[--i] = digits[n%d];
n /= d;
}while(n); for(j=; (s[j] = buf[i]) != '\0'; j++,i++);
return j;
} /*函数circle用于判断正整数n的d进制数表示形式是否是回文数*/
int Circle(int n, int d)
{
int s = ;
int m = n; while(m)
{
s = s*d + m%d;
m /= d;
} return s == n;
} int scale[] = {,,,}; //需要转换成的进制(d进制)
int num[] = {, , , , }; //需要转换的整数 int main()
{
char Str_Trans[];
int i, j; for(i=; i<sizeof(num)/sizeof(num[]); i++)
{
for(j=; j<sizeof(scale)/sizeof(scale[]); j++)
{
Trans(num[i], scale[j], Str_Trans);
if(Circle(num[i], scale[j]))
printf("%3d -> %10s -> (%2d) is a Circle Number!\n", num[i], Str_Trans, scale[j]);
else
printf("%3d -> %10s -> (%2d) is not a Circle Number!\n", num[i], Str_Trans, scale[j]);
}
}
printf("\n Press any key to quit...\n");
return ;
}

最新文章

  1. 源码阅读笔记 - 2 std::vector (2) 关于Allocator Aware Container特性
  2. 交换排序---冒泡排序算法(Javascript版)
  3. WebApi:路由和Action选择
  4. 01_Swift2基础之Swift简介+创建
  5. [WEB API] CLIENT 指定请求及回应格式(XML/JSON)
  6. element表格添加查看操作
  7. [转帖]Linux中的15个基本‘ls’命令示例
  8. Django——分页
  9. insertBefore(),appendChild()创建添加列表实例
  10. Zbrush Topogun 备忘
  11. json转换工具类:json&lt;===&gt;list或者对象
  12. Android Studio从2.3升级到3.1注意事项
  13. 团队作业之四则运算GUI展示
  14. JSON数据生成树——(四)
  15. struts2的占位符*在action中的配置方法
  16. Effective Java 中文版
  17. 移动直播app怎么做
  18. sharepoint搜索配置问题
  19. 用sc命令查询系统状态
  20. SCADA 必备函数之 :关于消息的函数

热门文章

  1. 高逼格UILabel的闪烁动画效果
  2. IIS 7 启用 gzip 静态压缩 压缩js和css文件
  3. February 20 2017 Week 8 Monday
  4. [EffectiveC++]item33:避免遮掩继承而来的名称。
  5. Oracle Update语句
  6. SAP Cloud for Customer Sales Order Requested Date的业务含义和实现
  7. openlayers中的自定制工具栏,包含画点、线、面
  8. hdu-2620 Ice Rain---数论(取模运算规律)
  9. AtomicInteger线程安全的计数器
  10. 快速了解jquery