C++能够实现二进制八进制十进制十六进制的数转换为二进制八进制十进制十六进制的数,能够保存历史记录,在一次转换结束后可以直接进行下一次转换也可以重新输入一个数进行新的转换创新进制的数
时间: 2023-12-10 15:42:45 浏览: 73
是的,C++可以实现这个功能。你可以使用字符串来表示不同进制的数,并使用库函数进行进制转换。以下是一个示例程序:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 将字符串表示的数转换为整数
int strToInt(string str, int base) {
int res = 0;
for (int i = 0; i < str.size(); i++) {
int num = (isdigit(str[i])) ? (str[i] - '0') : (str[i] - 'A' + 10);
res = res * base + num;
}
return res;
}
// 将整数转换为字符串表示的数
string intToStr(int num, int base) {
string str;
while (num > 0) {
int rem = num % base;
char ch = (rem < 10) ? (rem + '0') : (rem - 10 + 'A');
str = ch + str;
num /= base;
}
if (str.empty()) str = "0";
return str;
}
int main() {
vector<string> history;
while (true) {
// 输入要转换的数和目标进制
string numStr, baseStr;
cout << "Enter a number and its base: ";
cin >> numStr >> baseStr;
// 保存历史记录
history.push_back(numStr + " " + baseStr);
// 转换为十进制
int base = stoi(baseStr);
int num = strToInt(numStr, base);
// 显示转换结果
cout << "Decimal: " << num << endl;
cout << "Binary: " << intToStr(num, 2) << endl;
cout << "Octal: " << intToStr(num, 8) << endl;
cout << "Hexadecimal: " << intToStr(num, 16) << endl;
// 询问是否继续
string answer;
cout << "Do you want to continue? (y/n) ";
cin >> answer;
if (answer != "y") break;
}
// 显示历史记录
cout << "History:\n";
for (int i = 0; i < history.size(); i++) {
cout << history[i] << endl;
}
return 0;
}
```
该程序使用了 `strToInt` 函数和 `intToStr` 函数将不同进制的数转换为十进制和其他进制的数。同时,它还使用了 `vector` 容器来保存历史记录,并以交互式方式与用户交互。
阅读全文