用栈实现十进制转八进制的实验要求及注意事项
时间: 2023-11-20 14:12:06 浏览: 35
实验要求:
1. 使用栈来实现将十进制数转换为八进制数的算法;
2. 能够正确处理输入值为0或负数的情况;
3. 能够正确处理连续输入的情况。
注意事项:
1. 实现时需要定义一个栈结构,并定义对应的入栈、出栈等操作;
2. 在转换过程中,需要使用到除法和取余操作;
3. 转换完成后,需要将八进制数从栈中依次出栈并输出。
下面是一个示例代码,供参考:
```python
class Stack(object):
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def size(self):
return len(self.items)
def decimal_to_octal(decimal_num):
if decimal_num == 0:
return 0
stack = Stack()
while decimal_num > 0:
remainder = decimal_num % 8
stack.push(str(remainder))
decimal_num //= 8
octal_num = ""
while not stack.is_empty():
octal_num += stack.pop()
return int(octal_num)
# 测试
print(decimal_to_octal(0)) # 0
print(decimal_to_octal(-10)) # -12
print(decimal_to_octal(10)) # 12
print(decimal_to_octal(123456789)) # 726746425
```