栈的应用:十进制转二进制、八进制、十六进制
栈的应用:十进制数的进制转换
问题描述
利用栈实现将一个十进制数 n 转换为 d 进制数(d 分别为 2, 8, 16)。
要求
- 输入一个十进制整数
n,打印输出其d进制表示。2. 利用顺序栈实现进制转换。3. 实现栈的初始化、入栈、出栈、判空等基本操作。4. 程序需包含功能选择菜单,并输出学号和姓名。5. 考虑程序的健壮性,例如对非法输入进行处理。
测试数据
- 8 进制: 输入
n = 1348,输出2504- 2 进制: 输入n = 1348,输出10101000100- 16 进制:输入n = 1348,输出544
Python 代码实现pythonclass Stack: 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() else: print('错误:栈为空!') return None
def decimal_to_d(n, d): stack = Stack() digits = '0123456789ABCDEF'
while n > 0: remainder = n % d stack.push(digits[remainder]) n //= d
result = '' while not stack.is_empty(): result += str(stack.pop())
return result
if name == 'main': print('20230023211-张明')
while True: print('
请选择要转换的进制:') print('1. 二进制') print('2. 八进制') print('3. 十六进制') print('4. 退出')
choice = input('请输入选项:')
if choice in ['1', '2', '3']: try: n = int(input('请输入一个十进制数 n:')) if n < 0: print('请输入一个非负整数!') continue except ValueError: print('输入错误,请输入一个整数!') continue
if choice == '1': result = decimal_to_d(n, 2) elif choice == '2': result = decimal_to_d(n, 8) else: result = decimal_to_d(n, 16)
print(f'转换结果:{result}') elif choice == '4': break else: print('无效的选项,请重新输入!')
代码说明
Stack类实现了栈的基本操作,包括初始化、判空、入栈和出栈。2.decimal_to_d(n, d)函数实现了将十进制数n转换为d进制数。3. 主程序中包含了功能选择菜单,用户可以选择将十进制数转换为二进制、八进制或十六进制。4. 程序对用户的输入进行了校验,例如判断输入是否为整数、是否为非负数等,提高了程序的健壮性。
总结
本代码实现了利用栈进行进制转换的功能,并包含了较为完善的错误处理机制,提高了程序的可靠性和用户体验。
原文地址: https://www.cveoy.top/t/topic/drNH 著作权归作者所有。请勿转载和采集!