上海交通大学程序设计思想与方法期末考试题
- 格式:pdf
- 大小:377.49 KB
- 文档页数:30


上海交大程序设计python期末测验题Python是一种简单易学、高效可靠的编程语言,广泛用于各种领域的开发和实践。
作为上海交大程序设计课程的期末测验题,该测试旨在评估学生对Python编程的掌握程度和应用能力。
本文将按照测试题的要求,分析和解答各个问题,展示学生在程序设计方面的能力。
第一题:编写程序,实现计算两个数的乘积解答:```pythonnum1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))result = num1 * num2print("两个数的乘积为:", result)```对于这道题目,我们需要从用户输入中获取两个数,通过乘法运算符将它们相乘,并将结果输出。
以上代码实现了这一功能。
第二题:编写程序,实现对一个整数列表的排序解答:```pythonnums = [5, 3, 8, 2, 1]nums.sort()print("排序后的列表:", nums)```这道题目要求我们对一个整数列表进行排序。
Python提供了list的sort()方法,可以直接对列表进行排序。
以上代码对给定的整数列表进行了排序,并将结果输出。
第三题:编写程序,实现一个简单的猜数字游戏解答:```pythonimport randomtarget = random.randint(1, 100)guess = int(input("请猜一个1到100之间的整数:"))if guess > target:print("猜大了!")elif guess < target:print("猜小了!")else:print("恭喜你,猜对了!")```这道题目要求我们编写一个猜数字游戏,程序随机生成一个1到100之间的整数,用户猜测这个数字是多少,程序根据猜测结果给予提示。
程序设计期末试题及答案1. 题目描述假设有一个学生成绩管理系统,具有以下功能:- 添加学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 统计学生人数- 计算学生平均分请你设计一个基于面向对象编程思想的学生成绩管理系统。
2. 解题思路首先,我们需要定义一个Student类,该类包含以下属性:- 学生姓名- 学生学号- 学生成绩可以使用构造函数初始化这些属性,同时提供设置和获取属性值的方法。
接下来,我们需要设计一个ManageSystem类,该类用于实现学生成绩管理系统的各种功能。
我们可以将学生信息存储在一个列表中,通过列表的操作来实现添加、修改、删除和查询学生信息的功能。
具体来说,ManageSystem类需要实现以下方法:- 添加学生信息:接受学生姓名、学号和成绩作为参数,创建一个Student对象并将其添加到学生列表中。
- 修改学生信息:接受学生学号和新的学生信息作为参数,遍历学生列表,找到对应学号的学生对象并修改其属性值。
- 删除学生信息:接受学生学号作为参数,遍历学生列表,找到对应学号的学生对象并从列表中删除。
- 查询学生信息:接受学生学号作为参数,遍历学生列表,找到对应学号的学生对象并返回其属性值。
- 统计学生人数:返回学生列表的长度。
- 计算学生平均分:遍历学生列表,累加每个学生的成绩,并返回总成绩除以学生人数的结果。
3. 代码实现```pythonclass Student:def __init__(self, name, student_id, score): = nameself.score = scoredef get_name(self):return def get_student_id(self):return self.student_iddef get_score(self):return self.scoredef set_name(self, name): = namedef set_student_id(self, student_id):self.student_id = student_iddef set_score(self, score):self.score = scoreclass ManageSystem:def __init__(self):self.students = []def add_student(self, name, student_id, score): student = Student(name, student_id, score)def modify_student(self, student_id, name=None, score=None): for student in self.students:if student.get_student_id() == student_id:if name:student.set_name(name)if score:student.set_score(score)def delete_student(self, student_id):for student in self.students:if student.get_student_id() == student_id:self.students.remove(student)def query_student(self, student_id):for student in self.students:if student.get_student_id() == student_id:return studentdef count_students(self):return len(self.students)def calculate_average_score(self):total_score = 0for student in self.students:total_score += student.get_score()return total_score / len(self.students)```4. 程序使用示例```python# 创建学生成绩管理系统对象system = ManageSystem()# 添加学生信息system.add_student("张三", "001", 80)system.add_student("李四", "002", 90)system.add_student("王五", "003", 85)# 修改学生信息system.modify_student("002", name="赵六", score=95) # 删除学生信息system.delete_student("001")# 查询学生信息student = system.query_student("003")print(student.get_name()) # 输出:王五# 统计学生人数count = system.count_students()print(count) # 输出:2# 计算学生平均分average_score = system.calculate_average_score()print(average_score) # 输出:90.0```5. 总结通过以上设计和实现,我们可以得到一个基于面向对象编程思想的学生成绩管理系统。
专业课复习资料(最新版)封面数据结构与C语言程序设计一. 是非题(2’⨯10)( )1、 队列逻辑上是一个表头和表尾既能插入又能删除的线性表。
( )2、 任何一个递归过程都可以转换成非递归过程。
( )3、 与n个键值的集合{k1,k2,…,kn}相对应的堆是唯一的。
( )4、 在索引顺序表上实现分块查找,在等概率查找情况下,其查找长度只与表中元素个数有关,而与每块中元素个数无关。
( )5、 所谓加权无向图G的最小生成树T就是将G中各结点间的最短路径作为边所构造出来的G的子图。
( )6、 在10万个随机排列的数据中,要选出5个最小的数,采用快速排序比采用Shell排序、堆排序及各种直接排序法都快。
( )7、 B树查找算法的时间复杂性为O(n)。
( )8、 哈希表查找无需进行关键字的比较。
( )9、 在执行某个排序过程中,出现排序码朝着最终位置相反方向移动,则该算法是不稳定的。
( )10、任何有向图的顶点都可以按拓扑序排序。
二.填空题(2’⨯6)1.假设用于通信的电文由8个字母组成,其频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10, 为这8个字母设计哈夫曼编码,其中编码长度最大的字母的编码是 位。
2.已知二叉树按中序遍历所得到的结点序列为DCBGEAHFIJK, 按后序遍历所得到的结点序列为DCEGBFHKJIA, 按先序遍历所得到的结点序列为 。
3. 设哈希表长度为11,散列函数H(k)=k MOD 11, 若输入顺序为(18,10,21,9,6,3,16,25,7),处理冲突方法为线性探测再散列,请构造哈希表 。
果 。
5.已知模式匹配的KMP算法中模式串t=’adabbadada’,其next函数的值为 。
6.在置换-选择排序中,假设工作区的容量为w,若不计输入、输出的时间,则对n个记录的文件而言,生成所有初始归并段所需时间为 。
三.简答题(6’⨯5)1.有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问采用什么排序方法时间复杂度最佳?为什么?2.对于一个栈,给出输入序列A,B,C,试给出全部可能的输出序列。