编程基于栈的操作实现将任意一个非负十进制数,打印输出 与其等值的八进制数;
时间: 2023-05-25 19:05:55 浏览: 89
可以使用栈来实现将十进制数转化为八进制数。
具体步骤如下:
1. 将十进制数除以8,将余数入栈。
2. 将商继续除以8,将余数也入栈。
3. 重复步骤2直到商为0,转化结束。
4. 将栈中的数字依次弹出,拼接成字符串即为八进制数。
下面是代码实现:
```python
def decimal_to_octal(decimal):
stack = []
while decimal != 0:
remainder = decimal % 8
stack.append(remainder)
decimal //= 8
octal = ""
while stack:
octal += str(stack.pop())
return octal
# 测试
print(decimal_to_octal(10)) # 12
print(decimal_to_octal(42)) # 52
print(decimal_to_octal(123)) # 173
```
相关问题
编程基于栈的操作实现将任意一个非负十进制数打印输出与其等值的八进制数
算法步骤:
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;
}
```
该程序中,我们使用了一个栈来存储八进制数的每一位。首先,我们将输入的十进制数转换为八进制数,并将每一位压入栈中。然后,我们依次弹出栈顶元素并输出,就得到了该数的八进制表示。
阅读全文