用栈写二进制转八进制转十进制转十六进制


首先,定义一个栈的数据结构: ```python class 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: return None def peek(self): if not self.is_empty(): return self.items[-1] else: return None def size(self): return len(self.items) ``` 接下来,编写一个函数来实现二进制转八进制的功能: ```python def binary_to_octal(binary_num): octal_num = '' binary_stack = Stack() for digit in binary_num: binary_stack.push(int(digit)) while binary_stack.size() >= 3: octal_digit = 0 for i in range(3): octal_digit += binary_stack.pop() * (2 i) octal_num = str(octal_digit) + octal_num remainder = 0 while not binary_stack.is_empty(): remainder = remainder * 2 + binary_stack.pop() octal_num = str(remainder) + octal_num return octal_num ``` 然后是实现八进制转十进制的功能: ```python def octal_to_decimal(octal_num): decimal_num = 0 exponent = 0 octal_stack = Stack() for digit in octal_num: octal_stack.push(int(digit)) while not octal_stack.is_empty(): decimal_num += octal_stack.pop() * (8 exponent) exponent += 1 return decimal_num ``` 最后是实现十进制转十六进制的功能: ```python def decimal_to_hex(decimal_num): hex_num = '' hex_chars = '0123456789ABCDEF' hex_stack = Stack() while decimal_num > 0: hex_stack.push(decimal_num % 16) decimal_num = decimal_num // 16 while not hex_stack.is_empty(): hex_num += hex_chars[hex_stack.pop()] return hex_num ``` 最终的转换过程为: ```python binary_num = '100101101' octal_num = binary_to_octal(binary_num) decimal_num = octal_to_decimal(octal_num) hex_num = decimal_to_hex(decimal_num) print(f'Binary: {binary_num}') print(f'Octal: {octal_num}') print(f'Decimal: {decimal_num}') print(f'Hexadecimal: {hex_num}') ``` 以上是用栈实现二进制转八进制转十进制转十六进制的完整代码。 [2024-10-16 19:49:50 | AI写代码神器 | 1526点数解答]
- 编写js程序,定义函数change(n,x),实现给定数字的进制转换功能。其中,n表示给定的数字,x表示要转换的进制(二进制、八进制)(436点数解答 | 2025-04-09 22:19:11)79
- 用python实现 十进制转二、八、十六进制(280点数解答 | 2024-11-26 18:04:03)86
- 通常,您使用以 10 为基数进行算术运算。在计算机科学中,您还处理二进制(以 2 为基数)、八进制(以 8 为基数)和十六进制(以 16 为基数)。在这个问题中,我们将考虑以 9 为基数,它使用数字 0..8。,语言方向:C++(349点数解答 | 2024-12-22 15:04:41)178
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 请录入“c++编程”课程成绩 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单(6361点数解答 | 2024-05-24 02:01:02)327
- c++程序编写: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保(68点数解答 | 2024-05-24 10:17:09)209
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保存为(4293点数解答 | 2024-05-24 10:20:03)260