要求:输入一个n进制的数(二进制、八进制、十六进制)转换为十进制。
eg:101(二进制)--->5(十进制) a1(十六进制)--->161(十进制)
11(八进制)--->9(十进制)
程序:
#include<iostream>
using namespace std;
#include<cmath> //pow函数头文件 eg:pow(x,y) 表示x的y次方
void my_bin_dec(int& a) //二进制数转换为十进制数
{
int my_bit[16]; //输入的二进制个个位数放置在16位数组中
for (int i = 0; i < 16; i++)
{
my_bit[i] = a % 10;
a /= 10;
}
for (int i = 0; i < 16; i++) //将二进制数转换为十进制数
{
if(my_bit[i]==1)
a += pow(2, i);
}
}
int main()
{
int a;
int x; //选择进制的标志
cout << "请选择输入几进制(2,8,16进制)的数" << endl;
cin >> x;
cout << "请输入" << x << "进制数的数值:";
switch (x)
{
case 2:
{
cin >> a; //用十进制表示二进制,但输入的数只能有0或1组成,(这里我们设定)位数不超过16位
break;
}
case 8:
{
cin >> oct >> a; //八进制输入
break;
}
case 16:
{
cin >> hex >> a; //十六进制输入
break;
}
default:
{
cout << "输入错误,退出程序" << endl;
system("pause");
return 0;
}
}
if (x == 8 || x == 16)
{
cout << "转换的十进制数为" << a << endl;
}
else
{
my_bin_dec(a);
cout << "转换的十进制数为" << a << endl;
}
system("pause");
return 0;
}
运行结果: