C++编写程序实现二、八、十、十六进制数之间相互转换(包括小数)。 输入输出 1.输出操作菜单: 一级菜单: (1)2进制数转换 (2)8进制数转换 (3)10进制数转换 (4)16进制数转换 (0)退出 二级菜单:(只是以2进制转其他进制为例,其他进制相同) (1)2进制数 ---> 8进制数 (2)2进制数 ---> 10进制数 (3)2进制数 ---> 16进制数 (0)返回上级目录
时间: 2024-01-03 20:05:37 浏览: 92
计算机考研复试:C++实现进制转换,包括二,十,十六之间相互转换
好的,以下是 C++ 实现二、八、十、十六进制数之间相互转换的代码:
```c++
#include <iostream>
#include <string>
#include <cmath>
#include <sstream>
using namespace std;
// 二进制转十进制
int bin_to_dec(string num) {
int dec_num = 0;
int len = num.length();
for (int i = 0; i < len; i++) {
dec_num += (num[i] - '0') * pow(2, len - i - 1);
}
return dec_num;
}
// 八进制转十进制
int oct_to_dec(string num) {
int dec_num = 0;
int len = num.length();
for (int i = 0; i < len; i++) {
dec_num += (num[i] - '0') * pow(8, len - i - 1);
}
return dec_num;
}
// 十六进制转十进制
int hex_to_dec(string num) {
int dec_num = 0;
int len = num.length();
for (int i = 0; i < len; i++) {
if (num[i] >= '0' && num[i] <= '9') {
dec_num += (num[i] - '0') * pow(16, len - i - 1);
} else if (num[i] >= 'A' && num[i] <= 'F') {
dec_num += (num[i] - 'A' + 10) * pow(16, len - i - 1);
} else if (num[i] >= 'a' && num[i] <= 'f') {
dec_num += (num[i] - 'a' + 10) * pow(16, len - i - 1);
}
}
return dec_num;
}
// 十进制转二进制
string dec_to_bin(int num) {
string bin_num = "";
while (num) {
bin_num = to_string(num % 2) + bin_num;
num /= 2;
}
return bin_num;
}
// 十进制转八进制
string dec_to_oct(int num) {
string oct_num = "";
while (num) {
oct_num = to_string(num % 8) + oct_num;
num /= 8;
}
return oct_num;
}
// 十进制转十六进制
string dec_to_hex(int num) {
string hex_num = "";
while (num) {
int temp = num % 16;
if (temp < 10) {
hex_num = to_string(temp) + hex_num;
} else {
hex_num = char(temp - 10 + 'A') + hex_num;
}
num /= 16;
}
return hex_num;
}
int main() {
int choice1, choice2;
string num;
while (true) {
cout << "请选择需要的操作:" << endl;
cout << "1. 2进制数转换" << endl;
cout << "2. 8进制数转换" << endl;
cout << "3. 10进制数转换" << endl;
cout << "4. 16进制数转换" << endl;
cout << "0. 退出" << endl;
cin >> choice1;
if (choice1 == 0) {
break;
}
cout << "请选择转换方式:" << endl;
cout << "1. 转换为8进制" << endl;
cout << "2. 转换为10进制" << endl;
cout << "3. 转换为16进制" << endl;
cout << "0. 返回上级目录" << endl;
cin >> choice2;
if (choice2 == 0) {
continue;
}
cout << "请输入需要转换的数字:" << endl;
cin >> num;
string result;
switch (choice1) {
case 1:
switch (choice2) {
case 1:
result = dec_to_oct(bin_to_dec(num));
break;
case 2:
result = to_string(bin_to_dec(num));
break;
case 3:
result = dec_to_hex(bin_to_dec(num));
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
break;
case 2:
switch (choice2) {
case 1:
result = dec_to_oct(oct_to_dec(num));
break;
case 2:
result = to_string(oct_to_dec(num));
break;
case 3:
result = dec_to_hex(oct_to_dec(num));
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
break;
case 3:
switch (choice2) {
case 1:
result = dec_to_oct(stoi(num));
break;
case 2:
result = num;
break;
case 3:
result = dec_to_hex(stoi(num));
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
break;
case 4:
switch (choice2) {
case 1:
result = dec_to_oct(hex_to_dec(num));
break;
case 2:
result = to_string(hex_to_dec(num));
break;
case 3:
result = num;
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
cout << "转换结果为:" << result << endl;
}
return 0;
}
```
这个程序实现了二、八、十、十六进制数之间的相互转换(包括小数),并提供了菜单供用户选择需要的操作。其中,二进制转换其他进制只是作为示例,其他进制之间的转换方法相同,只需稍作修改即可。
阅读全文