C++ 十进制转其他进制

C++ 十进制转其他进制

开发工具与关键技术:C++、VisualStudio
作者:何任贤
撰写时间:2019年04月10日

在学习C++基础过程中,接触到进制转换,个人想要尝试一下用C++来写一个进制转换,
这篇文章主要内容是十进制转其他进制,现在的进制有十六进制、十进制、八进制、二进制。
我们先来看代码:
#include
#include
using namespace std;
void main() {
int NUM,JZ;
int x = 0;
int y = 1;
int va = 0;
string vx = “”;
string vr = “”;
cout << “请输入一个十进制的数:”;
cin >> NUM;
cout << “请输入要转换的进制:”;
cin >> JZ;
if (JZ == 16) {
if (NUM >= 16) {
for (int i = NUM; i >= 16 * pow(10, x); ) {
if (i >= 16 * pow(10, x)) { va = va + 1 * pow(10, y); }
i = i - 16 * pow(10, x);
if (i<16 * pow(10, x)) {
if (i == 10 * pow(10, x)) { vx = “A” + vx; }
else if (i == 11 * pow(10, x)) { vx = “B” + vx; }
else if (i == 12 * pow(10, x)) { vx = “C” + vx; }
else if (i == 13 * pow(10, x)) { vx = “D” + vx; }
else if (i == 14 * pow(10, x)) { vx = “E” + vx; }
else if (i == 15 * pow(10, x)) { vx = “F” + vx; }
else { vx =to_string(i) + vx; }
}
if (i < 16 * pow(10, x)) {
if (va >= 16 * pow(10, y)) {
y++; x++; i = va; va = 0;
}
else {
x = vx.size();
va = va / pow(10, x);
if (va == 10) { vr = “A”; }
else if (va == 11) { vr = “B”; }
else if (va == 12) { vr = “C”; }
else if (va == 13) { vr = “D”; }
else if (va == 14) { vr = “E”; }
else if (va == 15) { vr = “F”; }
else { vr = to_string(va); }
vx = vr + vx;
}
}
}
}
else {
va = NUM;
if (va == 10) { vx = “A”; }
else if (va == 11) { vx = “B”; }
else if (va == 12) { vx = “C”; }
else if (va == 13) { vx = “D”; }
else if (va == 14) { vx = “E”; }
else if (va == 15) { vx = “F”; }
else { vx = va; }
}
}
else {
for (int i = NUM; i >= JZpow(10, x); ) {
if (i >= JZ
pow(10, x)) {
va = va + 1 * pow(10, y);
}
i = i - JZpow(10, x);
if (i<JZ
pow(10, x)) {
va = va + i;
vx = to_string(va);
}
if (i < JZpow(10, x)) {
if (va >= JZ
pow(10, y)) {
y++; x++; i = va; va = 0;
}
}
}
}
cout << “转换之后的数为:” << vx << endl;
}
再看一些输出结果:
例1:转八进制和二进制的例子,把它们两个放一起一起讲是因为他们用的是同样的代码

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

这是八进制和二进制的示例,输入的是10和156,输出结果八进制的是12和234,二进制的是1010和10011100,它们的代码主要部分是一个for循环,如上所示NUM代表一个十进制的数,JZ代表要转换的进制,声明两个变量va、vx,当NUM输入的是10,JZ输入的是2 ,该for循环执行每当NUM>=210x时,减去2*10x,x的初始值为0,每当NUM<=210x时加一,va加十,直到NUM等于或小于2时,判断va是否大于等于10的y次方,y的初始值为1,每当NUM<=2*10x时加一,若va大于等于时10的y次方时将va赋值给NUM,继续循环,直到va小于10的y次方,将va赋值给vx然后输出vx。

例2:十六进制和八进制、二进制不同,十六进制有A、B、C、D、E、F等字母,分别代表10、11、12、13、14、15,下面输入和输出结果
在这里插入图片描述 在这里插入图片描述
输入同样是10和156,输出结果为A和9C,for循环的原理同上,不同的是因为每当十六进制结束一轮for循环时都要加上判断,判断NUM是否为10、11、12、13、14、15,如果是将vx赋值为A、B、C、D、E、F等字母,再进行下轮for循环或结束佛如循环。
以上就是十进制转其他进制的内容,文章到此结束。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值