进位制换算
2015-11-08 15:04
225 查看
基础测试编程题:
编程实现将任意的十进制整数转换成任意R进制数(R在2-16之间)
要做这道题,我们首先应该明白进位制转换到底是怎么一个过程。这里主要讲的是将10进制的数转化为其他进制的数。
首先进制的概念大家应该都要清楚,不清楚可以去百度查。各个进制间其实没有本质的区别。10进制我们用的最多,而且我们的数字系统本身是建立在10进制上的,所以我们最熟悉,也最熟练。
将其他进制的数转化为10进制十分简单(数字系统决定的)。比如我要将6进制的(12345)数转化为10进制,只需要根据定义,得5+4*6+3*6^2+2*6^3+1*6^4=1865.那反向的运算我们应该怎么去做的。还是得从这个式子中寻找线索。
我们发现,对于n进制的(abcde),都有10进制为e+d*n+c*n^2+b*n^3+a*n^4,从这个式子来看,其除以n的余数即位n进制中的个位数。商为d+c*n+b*n^2+a*n^3,再除以n,余数是十位数,以此类推。
于是我就搞了上面这个算法。其中ch[]是字符表,题目要求最多为16进制,所以为16个,20进制的话就要加20个。while循环内部本身就是在做我上述描述的算法,其他部分就都很好理解了。
编程实现将任意的十进制整数转换成任意R进制数(R在2-16之间)
/* 编程实现将任意的十进制整数转换成任意R进制数(R在2-16之间) */ #include <stdio.h> #include <string.h> #define MAX 1000 int main(){ int R, num, i = 1, count = 0, len; char ch[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };//字符表 char ans[MAX]; printf("请输入需要转化成的进制数:"); scanf("%d", &R); printf("请输入需要转化的十进制数:"); scanf("%d", &num); while (num){ ans[count] = ch[num%R];//确定当前位的字符 num /= R; i *= R;//下一位计算的准备 count++; } ans[count] = '\0';//为得到的答案串添加字符串结束符,避免错误。 len = strlen(ans); for (i = 0; i < len; i++){ printf("%c", ans[len - i - 1]);//输出答案串,注意要倒叙输出 } printf("\n"); return 0; }
要做这道题,我们首先应该明白进位制转换到底是怎么一个过程。这里主要讲的是将10进制的数转化为其他进制的数。
首先进制的概念大家应该都要清楚,不清楚可以去百度查。各个进制间其实没有本质的区别。10进制我们用的最多,而且我们的数字系统本身是建立在10进制上的,所以我们最熟悉,也最熟练。
将其他进制的数转化为10进制十分简单(数字系统决定的)。比如我要将6进制的(12345)数转化为10进制,只需要根据定义,得5+4*6+3*6^2+2*6^3+1*6^4=1865.那反向的运算我们应该怎么去做的。还是得从这个式子中寻找线索。
我们发现,对于n进制的(abcde),都有10进制为e+d*n+c*n^2+b*n^3+a*n^4,从这个式子来看,其除以n的余数即位n进制中的个位数。商为d+c*n+b*n^2+a*n^3,再除以n,余数是十位数,以此类推。
于是我就搞了上面这个算法。其中ch[]是字符表,题目要求最多为16进制,所以为16个,20进制的话就要加20个。while循环内部本身就是在做我上述描述的算法,其他部分就都很好理解了。
相关文章推荐
- Log4j没有正确配置导致项目没有发布成功
- Ubuntu 14.04安装Hadoop2.5.2(单机模式)
- eclipse安装maven
- Win7或Win8上安装VS2015报“安装包丢失或损坏”问题的解决办法
- LeetCode17:Letter Combinations of a Phone Number
- 分享WCF文件传输实现方法---WCFFileTransfer
- WebService
- 容器Collection_Set_List_ArrayListJAVA099-102
- 信息安全系统设计基础第九周学习总结
- 维度模型数据仓库(九) —— 角色扮演维度
- 【Oracle】--"任性"Oracle安装之旅
- 数据结构实践项目——图的基本运算及遍历操作
- [置顶] 在指定的 DSN 中,ODBC驱动程序和应用程序之间的体系结构不匹配解决方法
- Ubuntu's Trash
- Ubuntu 14.04.1中安装JDK
- (一)线性回归与特征归一化(feature scaling)
- Ubuntu's Trash
- 清除浮动(clear float)
- mysql性能优化
- Hive安装及使用攻略