编程基于栈的操作实现将任意一个非负十进制数打印输出与其等值的八进制数
时间: 2024-05-01 10:17:01 浏览: 11
算法步骤:
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;
}
```
该程序中,我们使用了一个栈来存储八进制数的每一位。首先,我们将输入的十进制数转换为八进制数,并将每一位压入栈中。然后,我们依次弹出栈顶元素并输出,就得到了该数的八进制表示。
编程基于栈的操作实现将任意一个非负十进制数,打印输出 与其等值的八进制数C++
我们可以使用栈来实现将非负十进制数转换为八进制数。具体实现过程如下:
1. 定义一个栈,用于存储八进制数的每一位。
2. 对于输入的非负十进制数,不断进行以下操作,直到数值为0:
a. 取其对8的余数,作为八进制数的一位,压入栈中。
b. 将该数值除以8向下取整,继续进行操作。
3. 将栈中的元素依次出栈,组成八进制数,即为所求。
以下是具体实现的代码:
```python
def decimal_to_octal(num):
stack = []
while num != 0:
remainder = num % 8
stack.append(str(remainder))
num = num // 8
octal_num = ""
while stack:
octal_num += stack.pop()
print(octal_num)
```
我们可以使用该代码实现将任意非负十进制数转换为八进制数,例如:
```python
decimal_to_octal(10) # 输出:12
decimal_to_octal(255) # 输出:377
```