C语言实例解析精粹学习笔记——19
2018-12-04 07:13:58来源:博客园 阅读 ()
实例19:判断正整数n的d进制表示形式是否是回文数(顺着看和倒着看相同的数)。
主要思路:
一种方法:将正整数n数转换成d进制的数,逐个比较首尾对应数字,判断是否为回文数。
另一种方法:将正整数n数转换成d进制的数,将低位数当做高位数,转换成正整数判断与原来的数是否相等。
书中采用的是第二种方法,下面的程序中与实例18相结合,实例18中对无符号整数进行转换,但是在实际的编程中从结果上看没有太大的区别。
(代码与书中代码有一定出入)
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define M sizeof(unsigned int)*8 5 6 /*实例18中主要用到的函数,将无符号整数转换成d进制数*/ 7 int Trans(unsigned n, int d, char s[]) 8 { 9 static char digits[] = "0123456789ABCDEF"; 10 char buf[M+1]; 11 int i, j = M; 12 13 if(d<2 || d>16) 14 { 15 s[0] = '\0'; 16 return 0; 17 } 18 19 buf[i] = '\0'; 20 do 21 { 22 buf[--i] = digits[n%d]; 23 n /= d; 24 }while(n); 25 26 for(j=0; (s[j] = buf[i]) != '\0'; j++,i++); 27 return j; 28 } 29 30 /*函数circle用于判断正整数n的d进制数表示形式是否是回文数*/ 31 int Circle(int n, int d) 32 { 33 int s = 0; 34 int m = n; 35 36 while(m) 37 { 38 s = s*d + m%d; 39 m /= d; 40 } 41 42 return s == n; 43 } 44 45 int scale[] = {2,10,16,8}; //需要转换成的进制(d进制) 46 int num[] = {232, 27, 851, 123, 111}; //需要转换的整数 47 48 int main() 49 { 50 char Str_Trans[33]; 51 int i, j; 52 53 for(i=0; i<sizeof(num)/sizeof(num[0]); i++) 54 { 55 for(j=0; j<sizeof(scale)/sizeof(scale[0]); j++) 56 { 57 Trans(num[i], scale[j], Str_Trans); 58 if(Circle(num[i], scale[j])) 59 printf("%3d -> %10s -> (%2d) is a Circle Number!\n", num[i], Str_Trans, scale[j]); 60 else 61 printf("%3d -> %10s -> (%2d) is not a Circle Number!\n", num[i], Str_Trans, scale[j]); 62 } 63 } 64 printf("\n Press any key to quit...\n"); 65 return 0; 66 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- QT5 解析JSON文件 2020-06-09
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 解析一下C++的异常处理 2020-05-15
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash