C++——顺序栈实现十进制转换为二进制-八进制-十六进制。输入:第1行为一个整数t(1≤t≤10),表示接下来有t 个测试数据。 然后在第2行输入被转换的十进制数后,第3行输入要转换成的数制。输出:转换后得到的数。
时间: 2024-10-09 22:08:43 浏览: 65
在C++中,你可以使用自定义的顺序栈(可以是一个动态数组或递归队列)来实现这个功能。首先,我们需要创建三个栈分别用于存储二进制、八进制和十六进制的结果。然后,对于每一个测试数据,按照顺序将十进制数转换成每个目标进制的过程如下:
```cpp
#include <iostream>
#include <stack>
#include <string>
// Function to convert decimal to binary
std::string decimalToBinary(int num) {
std::stack<char> binStack;
while (num > 0) {
binStack.push((char)(num % 2 + '0'));
num /= 2;
}
return std::string(binStack.begin(), binStack.end());
}
// Similar functions for octal and hexadecimal conversions
std::string decimalToOctal(int num) { ... } // Use similar logic, replace modulo operation with 8
std::string decimalToHexadecimal(int num) { ... } // Use similar logic, replace modulo operation with 16
int main() {
int t;
std::cin >> t;
for (int i = 0; i < t; ++i) {
int decNum;
std::cin >> decNum;
std::cout << "Decimal to Binary: " << decimalToBinary(decNum) << "\n";
std::cout << "Decimal to Octal: " << decimalToOctal(decNum) << "\n";
std::cout << "Decimal to Hexadecimal: " << decimalToHexadecimal(decNum) << "\n";
}
return 0;
}
```
在这个程序中,`decimalToBinary`, `decimalToOctal`, 和 `decimalToHexadecimal` 函数内部会循环除以相应的基数并将余数压入对应的栈中。最后,我们将栈的内容转换为字符串并输出。
阅读全文