C++用栈设计将十进制数转换为八进制,并输出 输入包含若干十进制正整数。 输出相应的八进制数,每个占一行。
时间: 2024-09-27 12:04:13 浏览: 69
在C++中,我们可以利用栈的数据结构来完成从十进制到八进制的转换。这里需要一个辅助数组来存储临时的转换结果,因为每次乘以8(相当于除以10在十进制中)都会得到一个新的数字。以下是实现的一个简单示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
std::string decimalToOctal(int num) {
std::stack<char> octalStack;
while (num > 0) {
int remainder = num % 8;
octalStack.push('0' + remainder); // 将余数转换为字符并入栈
num /= 8;
}
// 反转栈里的字符,因为栈顶元素是最小的八进制位
std::string result = "";
while (!octalStack.empty()) {
result += octalStack.top();
octalStack.pop();
}
return result;
}
int main() {
int input;
std::cout << "Enter decimal numbers (input '0' to stop):\n";
while (std::cin >> input && input != 0) {
std::cout << decimalToOctal(input) << "\n"; // 转换并打印结果
}
return 0;
}
```
这个程序会循环读取用户的输入直到输入 `0`,然后对每个输入的十进制数调用 `decimalToOctal` 函数转换成八进制,并输出结果。
阅读全文