C++能够进行进制转换,能够输出转换后的结果并保存历史记录,在一次转换结束之后可以直接进行下一次转换也可以重新输入一个数进行新的转换如十进制的a转换为二进制的b可以立刻用b转换为其他进制的数
时间: 2024-01-22 13:18:03 浏览: 70
是的,C++中可以使用各种方法来进行进制转换。以下是一个简单的示例程序,演示了如何将一个十进制数转换为二进制、八进制或十六进制,并保存历史记录,以便在下次转换时使用。
```c++
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
void toBinary(int n) {
stack<int> s;
while (n > 0) {
s.push(n % 2);
n /= 2;
}
while (!s.empty()) {
cout << s.top();
s.pop();
}
cout << endl;
}
void toOctal(int n) {
stack<int> s;
while (n > 0) {
s.push(n % 8);
n /= 8;
}
while (!s.empty()) {
cout << s.top();
s.pop();
}
cout << endl;
}
void toHexadecimal(int n) {
vector<char> v;
while (n > 0) {
int rem = n % 16;
if (rem < 10) {
v.push_back(rem + '0');
} else {
v.push_back(rem - 10 + 'A');
}
n /= 16;
}
for (int i = v.size() - 1; i >= 0; i--) {
cout << v[i];
}
cout << endl;
}
int main() {
int n;
vector<int> history;
while (true) {
cout << "Enter a decimal number: ";
cin >> n;
history.push_back(n);
cout << "Binary: ";
toBinary(n);
cout << "Octal: ";
toOctal(n);
cout << "Hexadecimal: ";
toHexadecimal(n);
cout << endl;
cout << "Enter 'n' to start a new conversion, or any other key to exit: ";
char choice;
cin >> choice;
if (choice == 'n') {
continue;
} else {
break;
}
}
cout << "History: ";
for (int i = 0; i < history.size(); i++) {
cout << history[i] << " ";
}
cout << endl;
return 0;
}
```
在这个程序中,我们定义了三个函数 `toBinary`、`toOctal` 和 `toHexadecimal`,它们分别将一个十进制数转换为二进制、八进制和十六进制。这些函数使用不同的算法来进行转换,但它们都使用类似的方法:使用一个栈或向量来存储转换后的数字,并在转换完成时将它们从栈或向量中弹出或取出,以便按正确的顺序输出它们。
在 `main` 函数中,我们首先提示用户输入一个十进制数,并将其存储在一个变量 `n` 中。然后,我们调用 `toBinary`、`toOctal` 和 `toHexadecimal` 函数来将这个数转换为二进制、八进制和十六进制,并将转换结果打印到标准输出中。我们还将每个转换的输入值存储在一个向量 `history` 中,以便在程序退出之前打印出历史记录。
最后,我们询问用户是否要开始一个新的转换,如果用户输入了字符 'n',则我们会继续下一个循环,否则我们会退出程序并打印出历史记录。
当您运行这个程序时,它将提示您输入一个十进制数,并给出转换后的二进制、八进制和十六进制结果。您可以按 'n' 继续下一个转换,或者按任何其他键退出程序并打印历史记录。
阅读全文