用C++ 开发一段程序,利用栈实现十进制数向八进制数的转换。
时间: 2024-11-03 13:13:09 浏览: 11
在C++中,可以使用栈(Stack)数据结构来实现十进制数到八进制数的转换,这是因为栈能够按照后进先出(LIFO)的原则存储数字。以下是一个简单的示例程序:
```cpp
#include <iostream>
#include <stack>
#include <string>
// 将一位八进制字符加入结果字符串
void add_digit_to_octal(std::stack<char>& stack, char digit) {
if (digit >= '0' && digit <= '7') {
stack.push(digit);
}
}
// 主函数:将十进制整数转换成八进制并输出
std::string decimal_to_octal(int decimal) {
std::stack<char> octal_stack;
while (decimal > 0) {
int remainder = decimal % 8; // 取余操作得到当前位的值
add_digit_to_octal(octal_stack, '0' + remainder); // 转换成字符并入栈
decimal /= 8; // 清除最低位
}
// 从栈顶开始拼接成字符串
std::string result = "";
while (!octal_stack.empty()) {
result += octal_stack.top();
octal_stack.pop();
}
return result; // 返回八进制表示
}
int main() {
int decimal_num = 123;
std::string octal_num = decimal_to_octal(decimal_num);
std::cout << "Decimal " << decimal_num << " in octal is: " << octal_num << std::endl;
return 0;
}
```
在这个程序中,我们首先创建一个空栈`octal_stack`,然后通过不断取十进制数的余数,并将其转换为对应的八进制字符,直到十进制数变成0。最后,我们将栈中的字符逐个弹出并组成一个字符串,这就是最终的八进制表示。
阅读全文