栈的应用:十进制数的进制转换

问题描述

利用栈实现将一个十进制数 n 转换为 d 进制数(d 分别为 2, 8, 16)。

要求

  1. 输入一个十进制整数 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('无效的选项,请重新输入!')

代码说明

  1. Stack 类实现了栈的基本操作,包括初始化、判空、入栈和出栈。2. decimal_to_d(n, d) 函数实现了将十进制数 n 转换为 d 进制数。3. 主程序中包含了功能选择菜单,用户可以选择将十进制数转换为二进制、八进制或十六进制。4. 程序对用户的输入进行了校验,例如判断输入是否为整数、是否为非负数等,提高了程序的健壮性。

总结

本代码实现了利用栈进行进制转换的功能,并包含了较为完善的错误处理机制,提高了程序的可靠性和用户体验。

栈的应用:十进制转二进制、八进制、十六进制

原文地址: https://www.cveoy.top/t/topic/drNH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录