进制的相互转换
来源:互联网 发布:python安装教程 编辑:程序博客网 时间:2024/06/05 18:15
1.十进制数转换成任意进制(以字符形式输出,不考虑数值):
方法思路:通过数组一位一位的保存需要转化的各位数的下标的值,再倒序输出该位数值。
代码如下:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,m;void fun(int a,int b) //将十进制数a转换成b进制数(0<b<=16){ char str[]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //转化成十六进制 int i=0; int t[50]; if(a<0) { a=-a; printf("-"); } if(a>0) { while(a) { t[i]=a%b; //转换成多少进制就对多少取余,t[x]表示该位在str数组中的下标 a=a/b; //转换成多少进制就整除多少 i++; } while(i--) //倒序输出 { printf("%c",str[t[i]]); } printf("\n"); } else printf("0\n");}int main(){ while(~scanf("%d %d",&n,&m)&&m>0) { printf("10进制数%d转换为%d进制数为:",n,m); fun(n,m); } return 0;}
2.其它进制数转化成十进制数:(还是以字符形式输出,不考虑数值)
思路:与前面十进制数转化成任意进制差不多。这里我多用了一个num数组,其实也可以不用的,直接倒序计算然后将字符形式的数字处理一下(减去‘0’字符就行)变为数值就好,这里我就不写了。
代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int a;char b[20];bool flag;void fun(int a,char b[]){ char str[16]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int num[50]; long long int s,k; //s为转换成十进制后的值,为防止原进制和原数过大而定义成long long 型 memset(num,0,sizeof(num)); s=k=0; printf("%d进制数%s转换成十进制数为:\n",a,b); if(b[0]=='-') { printf("-"); } int l=strlen(b); for(int i=l; i>=0; i--) //将该数各位数值以整型保存在num数组中 for(int j=0; j<a; j++) { if(str[j]==b[i]) //与定义的数组匹配,匹配上的该数值就是str数组的下标值 { num[k++]=j; break; } } for(int i=0; i<l; i++) s=s+(num[i]*pow(a,i)); //正常的求任意进制转换成十进制数的公式 printf("%lld\n",s);}int main(){ printf("请输入两个数,第一个代表多少进制,第二个数为需要转换成十进制的数:\n"); while(~scanf("%d",&a)&&a>0&&a<=16) { scanf("%s",b); fun(a,b); } return 0;}
0 0
- 进制的相互转换
- 任意进制相互转换
- 进制相互转换 模块
- 16进制与10进制的相互转换
- 2到36进制之间的相互转换
- iOS字符串和16进制之间的相互转换
- 64和10进制的相互转换-PHP实现
- 使用java语言实现进制之间的相互转换
- Java的String/byte[]/16进制相互转换
- 利用python实现任意进制的相互转换
- cmd10与16进制的相互转换
- 使用java语言实现进制之间的相互转换
- C# 2、10、16进制的相互转换
- 十进制与m进制的相互转换
- Java进制概述及进制间的相互转换
- 字符串的相互转换
- 进制间的相互转换
- 进制间的相互转换
- Cooking Competition
- C语言入门简单例题
- HD 2438 Turn the corner (三分&&计算几何&&经典问题)
- ACMjavaP2011
- 正则表达式
- 进制的相互转换
- 大梦
- hadoop集群搭建
- 2017团体程序设计天梯赛CCCC杭州决赛总结
- 包装类
- Docker系列四,docker的高级操作
- hdu 2807
- 问题记录(1)
- Oracle中distinct的用法实例以及Oracle distince 用法和删除重复数据