经典算法:X进制数转换为Y进制数
来源:互联网 发布:2016年中国老龄化数据 编辑:程序博客网 时间:2024/06/05 16:33
前言
我们先看一个代码例子,这是十进制数转换为任意进制数的方法 void ARY(int num,int N){ int reminder; if(num<N){cout<<num;return ;} reminder = num%N; ARY(num/N,N); //通过递归方法来输出 cout<<reminder;}如果对此段代码不明白,请参照我一篇博客http://blog.csdn.net/qq_23100787/article/details/47446531
思路
思路很简单,就是利用上述代码,把X转换为10进制数然后再把X转换为Y进制数,思路就是如此
代码
代码说明:
我用来处理输入的数用的是字符串而不是int型,因为字符串能够处理特别大的数
几个函数的作用:
select_cout() 用来把10,11,12等数转换为A,B,C,D,E,F
change(int num,int N) 把十进制数num转换为N进制数
NumToTen(char *s,int x) 把X进制数转换为十进制数
#include<iostream>#include <cmath>using namespace std;void select_cout(int num){ //用来把10,11,12等数转换为A,B,C,D,E,F if(num>=0 &&num<=9) cout<<num; if(num==10) cout<<"A"; if(num==11) cout<<"B"; if(num==12) cout<<"C"; if(num==13) cout<<"D"; if(num==14) cout<<"E"; if(num==15) cout<<"F";}void change(int num,int N){ //把十进制数num转换为N进制数 int reminder; if(num<N){select_cout(num);return ;} reminder = num%N; change(num/N,N); select_cout(reminder);}int NumToTen(char *s,int x){ //把X进制数转换为十进制数 int sum=0,count=0,temp=0; char *p = s; while(*p) {p++;count++;} p--; while(count){ sum+=(pow(x,temp)*(*p-'0')); //这里写的很精髓,看不懂来问我 p--; count--; temp++; } return sum; }int main(){ int x,y; char num1[100]; cout<<"输入X进制和输入Y进制"<<endl; cin>>x>>y; cout<<"输入X进制对应的数1"<<endl; cin>>num1; change(NumToTen(num1,x),y); //直接一步得到结果,当然我是测试了很多遍的 cout<<endl;}
程序运行结果图
网上工具测试结果:
说明我的结果是对的
后序
进制转换写到这里应该就是终结版本了,因为暂时我就想不到什么更有意思的进制转换了,当然,我用的两个进制互相转换是利用了十进制作为桥梁的,如果哪位大神 想出来了或者是知道了两个进制直接转换的方法,欢迎来一起讨论~~~
seen
2015-09-07
0 0
- 经典算法:X进制数转换为Y进制数
- 【经典算法】:字符串转换为int型
- 算法:计算Y = X
- x进制转化为y进制
- 算法分析:x+y=x|y,求k小y
- java经典算法_014输入三个整数x,y,z,请把这三个数由小到大输出。
- 关于X开Y次方的算法
- 关于X开Y次方的算法
- pow(x,y)函数的实现算法
- Java中x=x+y与x+=y的区别,体现强制类型转换
- android中如何把`content://media/external/images/media/Y`转换为`file:///storage/sdcard0/Pictures/X.jpg`?
- 地址栏url不识别地图坐标为字符串型的X,Y.必须转换成数值型才识别
- 设计一个算法求节点值为x和节点y值得两个节点的最近共同祖先
- C经典 使用递归求x的y次方
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- 网页页面 自动刷新的3种代码
- sencha 报错问题汇总
- 客户端关闭连接服务器端没反应
- JAVA Key=Key模型(一对一双向唯一)
- 复杂链表的复制(结点包含随机指针)
- 经典算法:X进制数转换为Y进制数
- oc获取相册源码
- 1. java简介、开发环境搭建、第一个程序
- android模糊效果blur
- 双向链表的基本操作-数据结构
- Android无法安装包问题
- 3.2.5.4 分析黑名单
- 关于硬盘UUID更改及显示的方法
- hdu 5410 CRB and His Birthday 01完全混合背包