c++写一个数制转换的完整程序,对于键盘输入的任意一个非负十进制数,转换成等值的
时间: 2024-02-22 20:59:28 浏览: 73
数制转换的程序 C++
二进制、八进制和十六进制数。
以下是一个示例程序:
```
#include <iostream>
#include <stack>
#include <string>
using namespace std;
// 十进制转二进制
string decToBin(int num) {
if (num == 0) {
return "0";
}
stack<int> s;
while (num > 0) {
s.push(num % 2);
num /= 2;
}
string res = "";
while (!s.empty()) {
res += to_string(s.top());
s.pop();
}
return res;
}
// 十进制转八进制
string decToOct(int num) {
if (num == 0) {
return "0";
}
stack<int> s;
while (num > 0) {
s.push(num % 8);
num /= 8;
}
string res = "";
while (!s.empty()) {
res += to_string(s.top());
s.pop();
}
return res;
}
// 十进制转十六进制
string decToHex(int num) {
if (num == 0) {
return "0";
}
stack<char> s;
while (num > 0) {
int mod = num % 16;
if (mod < 10) {
s.push(mod + '0');
} else {
s.push(mod - 10 + 'A');
}
num /= 16;
}
string res = "";
while (!s.empty()) {
res += s.top();
s.pop();
}
return res;
}
int main() {
int num;
cout << "请输入一个非负十进制数:";
cin >> num;
cout << "二进制数为:" << decToBin(num) << endl;
cout << "八进制数为:" << decToOct(num) << endl;
cout << "十六进制数为:" << decToHex(num) << endl;
return 0;
}
```
程序中使用了栈来保存转换后的结果,以便于反转输出。函数 `decToBin`、`decToOct` 和 `decToHex` 分别实现了十进制转二进制、八进制和十六进制的逻辑。在 `main` 函数中,首先读入一个非负十进制数,然后分别调用上述函数进行转换,并输出结果。
阅读全文