编程基于栈的操作实现将任意一个非负十进制数,打印输出与其等值的八进制数
时间: 2024-05-02 16:21:25 浏览: 19
算法思路:
1. 定义一个栈来存储八进制数的每一位;
2. 将输入的十进制数不断除以8,余数入栈,商作为新的被除数;
3. 直到被除数为0,将栈中的元素依次出栈并输出即可。
Python 代码实现:
```python
def decimal_to_octal(decimal_num):
stack = [] # 定义一个栈
while decimal_num > 0:
remainder = decimal_num % 8 # 取余数
stack.append(remainder) # 入栈
decimal_num //= 8 # 取商
octal_num = "" # 初始化八进制数
while stack:
octal_num += str(stack.pop()) # 出栈并拼接到八进制数中
return octal_num
# 测试
print(decimal_to_octal(19)) # 输出:23
print(decimal_to_octal(123456)) # 输出:361100
```
相关问题
编程基于栈的操作实现将任意一个非负十进制数打印输出与其等值的八进制数
算法步骤:
1. 将十进制数不断除以8,将余数依次压入栈中,直到商为0为止。
2. 依次弹出栈中的元素,得到八进制数的各位数字,将其拼接成字符串。
3. 将字符串输出即可。
Python代码实现:
```python
def decimal_to_octal(decimal):
stack = []
while decimal > 0:
remainder = decimal % 8
stack.append(str(remainder))
decimal //= 8
octal = ""
while stack:
octal += stack.pop()
return octal
# 测试
print(decimal_to_octal(10)) # 输出:12
print(decimal_to_octal(123)) # 输出:173
print(decimal_to_octal(456789)) # 输出:1627465
```
编程基于栈的操作实现将任意一个非负十进制数打印输出与其等值的八进制数C语言
实现代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
void printOctal(int num) {
int remainder;
int stack[100];
int top = -1;
// 将 num 转换为八进制并压入栈中
while (num > 0) {
remainder = num % 8;
stack[++top] = remainder;
num /= 8;
}
// 依次弹出栈顶元素并输出
while (top >= 0) {
printf("%d", stack[top--]);
}
printf("\n");
}
int main() {
int num;
printf("Enter a non-negative decimal number: ");
scanf("%d", &num);
printf("Octal equivalent: ");
printOctal(num);
return 0;
}
```
该程序中,我们使用了一个栈来存储八进制数的每一位。首先,我们将输入的十进制数转换为八进制数,并将每一位压入栈中。然后,我们依次弹出栈顶元素并输出,就得到了该数的八进制表示。