利用顺序栈将十进制转为八进制c++
时间: 2024-11-16 16:20:45 浏览: 1
在C++中,我们可以利用顺序栈(也称为数组栈或动态数组栈)将十进制数转换为八进制数。这是因为顺序栈可以作为临时数据结构存储十进制每位的值,然后通过一系列除法和取余操作逐步转换。这里是一个简单的示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
std::string decimalToOctal(int decimal) {
std::stack<int> octalStack;
while (decimal != 0) {
int remainder = decimal % 8; // 取余得到八进制位
octalStack.push(remainder);
decimal /= 8; // 整除去除最低位
}
// 将栈顶元素依次压入字符串
std::string result;
while (!octalStack.empty()) {
result += std::to_string(octalStack.top());
octalStack.pop();
}
return result; // 从右到左的八进制表示
}
int main() {
int decimalNumber = 12345;
std::string octal = decimalToOctal(decimalNumber);
std::cout << "Decimal " << decimalNumber << " in Octal is " << octal << std::endl;
return 0;
}
```
在这个程序中,我们首先创建一个空栈`octalStack`,然后不断将十进制数`decimal`除以8并取余,直到`decimal`变为0。每次取余的结果会被推入栈中。最后,我们将栈顶元素出栈并转换为字符串形式,得到八进制表示。
阅读全文