
基础级初级题库 基础级高级题库 在线练习
❀ 基 础 级 初 级 题 库(共12题)❀ 返回最前
试题1:零花钱管家
【题目描述】
假设家长每周给孩子一定数额的零花钱,其中20%可以存入储蓄账户。请编写一个程序,输入每周的零花钱数额(可为小数),计算并输出一个月(按4周计)可存储的总金额。
【题目要求】
- 使用
float(input())接收输入的零花钱数额。 - 计算每周可存储金额:
每周零花钱 × 0.2。 - 输出格式为:
每月可存:XX元(保留两位小数)。 - 程序应具备良好的交互提示。
【输出示例】
每周零花钱:10
每月可存:8.00元
试题2:天气播报员
【题目描述】
编写一个程序,生成格式化的天气预报播报内容。播报内容包括温度、风力、紫外线等级,并使用转义字符实现换行、制表符对齐和符号插入。
【题目要求】
- 使用转义字符
\n实现换行、\t实现对齐。 - 紫外线等级使用 Unicode 符号
\u2600(太阳)表示。
【输出示例】
今日天气播报: 温度 28℃ 风力 东北风3级 紫外线 ☀☀
试题3:求一个数的相反数
【题目描述】
编写一个程序,输入一个整数,输出其相反数。相反数定义为绝对值相等、符号相反的数,0的相反数为0。
【题目要求】
- 使用
int(input())接收整数输入。 - 判断输入是否为0:若为0,相反数为0;否则为
-输入值。 - 输出格式为:
相反数是:XX。 - 使用 f-string 格式化输出。
【输出示例】
请输入一个整数:-5 相反数是:5
试题4:偶数判断器
【题目描述】
编写一个程序,输入一个整数,判断该数是否为偶数,并输出判断结果。
【题目要求】
- 使用
int(input())接收整数输入。 - 使用取模运算
%判断是否能被2整除。 - 输出格式为:
XX 是偶数或XX 不是偶数。 - 使用 f-string 格式化输出。
【输出示例】
请输入一个整数:8 8 是偶数
试题5:安全密码强度检测器
【题目描述】
设计一个密码安全检测系统,根据用户输入的密码判断其安全等级,并给出相应提示。
【题目要求】
- 接收用户输入的密码字符串。
- 判断条件:
- 长度 ≥ 8
- 包含字母(大小写均可)
- 包含数字
- 包含特殊符号(仅限
!@#$%)
- 输出规则:
- 满足全部条件(含特殊符号):
军用级安全密码! - 满足前三个条件(无特殊符号):
强密码(建议添加特殊符号) - 其他情况:
密码不安全:长度需≥8且含字母+数字
- 满足全部条件(含特殊符号):
- 使用
any()函数检测字符类型。
【输出示例】
设置你的密码:SecureP@ss2023 军用级安全密码!
试题6:闰年世纪校准器
【题目描述】
编写一个程序,输入一个年份,判断该年份是否为闰年,并输出判断结果。
【题目要求】
- 输入一个整数年份。
- 闰年判断规则(格里高利历法):
- 能被4整除且不能被100整除
- 或能被400整除
- 输出格式:
- 闰年:
XXXX是闰年(二月有29天) - 平年:
XXXX是平年(二月28天)
- 闰年:
- 使用逻辑运算符
and、or实现判断。
【输出示例】
输入年份:2024 2024是闰年(二月有29天)
试题7:水仙花数探测器
【题目描述】
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。请编写程序,找出所有100到999之间的水仙花数并输出。
【题目要求】
- 遍历100到999的所有整数。
- 分解出百位、十位、个位数字。
- 判断是否满足:
百位³ + 十位³ + 个位³ = 原数。 - 输出所有满足条件的数,每行一个。
- 使用
//和%实现数位分解。
【输出示例】
153 370 371 407
试题8:智能快递分拣机
【题目描述】
模拟一个快递分拣系统,持续接收包裹目的地输入,直到输入“q”结束,统计并输出分拣包裹数量。
【题目要求】
- 支持的目的地:
["北京", "上海", "广州", "重庆"]。 - 持续输入目的地,输入“q”结束。
- 若输入不在目的地列表中,提示错误并继续输入。
- 每输入一个有效目的地,计数加一,并提示分拣成功。
- 结束后输出总包裹数。
- 使用
while True和break控制循环。
【输出示例】
=== 快递分拣系统 ===
输入包裹目的地(可选:['北京', '上海', '广州', '重庆'],结束输入q):北京
【包裹1】去往北京的传送带已启动!
输入包裹目的地(可选:['北京', '上海', '广州', '重庆'],结束输入q):上海
【包裹2】去往上海的传送带已启动!
输入包裹目的地(可选:['北京', '上海', '广州', '重庆'],结束输入q):安徽
⚠️错误目的地,请重新输入!
输入包裹目的地(可选:['北京', '上海', '广州', '重庆'],结束输入q):q
今日共分拣 2 个包裹
试题9:百钱买百鸡(古算题实现)
【题目描述】
中国古代数学题“百钱买百鸡”:公鸡5文1只,母鸡3文1只,小鸡1文3只。请编写程序,找出所有可能的购买组合。
【题目要求】
- 公鸡数量范围:0~20,母鸡数量范围:0~33,小鸡数量 = 100 – 公鸡 – 母鸡。
- 满足条件:
- 小鸡数量为3的倍数
- 总金额为100文:
5*公鸡 + 3*母鸡 + 小鸡/3 = 100
- 输出所有符合条件的组合,格式为三列对齐。
- 使用嵌套循环遍历所有可能组合。
【输出示例】
公鸡 母鸡 小鸡 0 25 75 4 18 78 8 11 81 12 4 84
试题10:智能成绩分析系统
【题目描述】
输入若干学生成绩,计算平均分、各分数段人数及标准差,并输出统计分析结果。
【题目要求】
- 使用列表存储成绩,如:
[85, 92, 78, 90, 62, 88, 76, 95, 60, 73]。 - 分数段划分:
- <60、60-70、70-80、80-90、≥90
- 输出内容:
- 平均分(保留1位小数)
- 各分数段人数
- 标准差(保留2位小数)
- 使用
math.sqrt()计算标准差。
【输出示例】
平均分: 79.9 分数段分布: <60: 1人 60-70: 1人 70-80: 3人 80-90: 3人 ≥90: 2人 标准差: 11.86
试题11:生日倒计时程序
【题目描述】
设计一个生日倒计时模拟程序,要求模拟从生日前7天开始至生日当天的倒计时过程。程序需按天输出倒计时信息及对应的祝福语,并在生日当天输出特别庆祝信息。
【题目要求】
- 程序使用循环结构实现从7到1的倒计时。
- 每天输出格式如下:text距离生日还有X天 [对应祝福语]其中祝福语列表为:
- 第7天:
准备好礼物了吗? - 第6天:
蛋糕想好吃什么口味了吗? - 第5天:
记得邀请好朋友哦! - 第4天:
生日歌练习得怎么样啦? - 第3天:
好期待啊! - 第2天:
明天就是生日啦! - 第1天:
生日快乐!!!并额外输出Happy Birthday!
- 第7天:
- 倒计时结束后程序自动终止。
- 输出内容需严格按上述格式,包括空行与标点符号。
【输出示例】
距离生日还有7天
准备好礼物了吗?
距离生日还有6天
蛋糕想好吃什么口味了吗?
距离生日还有5天
记得邀请好朋友哦!
距离生日还有4天
生日歌练习得怎么样啦?
距离生日还有3天
好期待啊!
距离生日还有2天
明天就是生日啦!
距离生日还有1天
生日快乐!!!
Happy Birthday!
试题12:神奇许愿池模拟系统
【题目描述】
设计一个许愿池模拟系统,用户可指定许愿次数,系统将随机生成愿望类型并模拟许愿过程,最终输出许愿结果统计分析报告。
【题目要求】
- 程序开始时提示用户输入许愿次数(正整数)。
- 愿望类型从以下列表中随机选择:
["学业进步", "健康平安", "友谊长存", "财源广进", "心想事成"] - 每次许愿过程需显示动态等待效果(例如连续打印三个点,每个点间隔0.5秒)。
- 每次许愿的成功概率为70%,成功则输出“@ 愿望实现了!”,否则输出“X 这次没能实现”。
- 许愿结束后输出统计分析报告,包含:
- 许愿次数
- 实现次数
- 成功率(以整数百分比显示)
- 使用函数封装许愿逻辑,使用循环控制许愿次数,使用随机模块生成随机事件。
【输出示例】
欢迎来到神奇许愿池 许愿池正在泛起涟漪... 请输入许愿次数:5 第1次许愿:学业进步... @ 愿望实现了! 第2次许愿:健康平安... X 这次没能实现 第3次许愿:友谊长存... @ 愿望实现了! 第4次许愿:财源广进... @ 愿望实现了! 第5次许愿:心想事成... X 这次没能实现 === 许愿分析报告 === 许愿次数: 5次 实现次数: 3次 成功率: 60%
❀ 基 础 级 高 级 题 库(共28题)❀ 返回最前
试题1:糖果罐子管理系统
【题目描述】
实现一个糖果罐管理系统,能够对糖果列表进行基本的增删改查操作。初始糖果列表为 ['棒棒糖', '水果糖', '巧克力', '奶糖']。请编写程序,依次执行以下操作:
- 输出初始糖果罐。
- 输出第一颗糖(索引0)和最后一颗糖(索引-1)。
- 添加
'薄荷糖'到罐子底部。 - 吃掉第三颗糖(索引2),并输出吃掉的糖果。
- 把水果糖(索引1)换成
'棉花糖'。 - 遍历输出所有糖果及其位置。
【题目要求】
按照上述步骤顺序执行,并输出每一步的结果。输出格式请严格参照示例。
【输出示例】
初始糖果罐: ['棒棒糖', '水果糖', '巧克力', '奶糖']
第一颗糖(索引0): 棒棒糖
最后一颗糖(索引-1): 奶糖
添加薄荷糖后: ['棒棒糖', '水果糖', '巧克力', '奶糖', '薄荷糖']
吃掉了: 巧克力, 剩余糖果: ['棒棒糖', '水果糖', '奶糖', '薄荷糖']
更新后的糖果罐: ['棒棒糖', '棉花糖', '奶糖', '薄荷糖']
现在的糖果罐里有:
位置0: 棒棒糖
位置1: 棉花糖
位置2: 奶糖
位置3: 薄荷糖
试题2:学生午餐排队模拟
【题目描述】
用队列模拟学生午餐排队过程。初始队列为空,依次进行以下操作:
- 小明、小红、小刚依次加入队伍。
- 显示当前队伍顺序。
- 队首学生打完饭离开。
- 显示当前队伍顺序。
- 小丽、小强加入队伍。
- 显示当前队伍顺序。
- 连续两次队首学生离开。
- 显示当前队伍顺序。
- 继续队首学生离开直到队伍为空,每次离开时输出信息。
【题目要求】
实现一个队列,按照上述操作顺序输出每一步的结果。输出格式参照示例。
【输出示例】
小明 加入了午餐队伍
小红 加入了午餐队伍
小刚 加入了午餐队伍
当前队伍顺序: 小明 → 小红 → 小刚
小明 已经打完饭离开队伍
当前队伍顺序: 小红 → 小刚
小丽 加入了午餐队伍
小强 加入了午餐队伍
当前队伍顺序: 小红 → 小刚 → 小丽 → 小强
小红 已经打完饭离开队伍
小刚 已经打完饭离开队伍
当前队伍顺序: 小丽 → 小强
小丽 已经打完饭离开队伍
小强 已经打完饭离开队伍
队伍已经没有人了
当前队伍为空
试题3:课间操站位网格
【题目描述】
学校课间操需要按班级和学号站成方阵,每个位置由班级和学号标识。初始有3个班级,每班5人,站位按“班级-学号”命名。请实现以下功能:
- 显示初始站位网格。
- 定位查询2班3号学生。
- 交换1班2号和3班4号的位置。
- 新增一个班级(4班)。
- 遍历所有位置输出。
【题目要求】
按照上述步骤执行,并输出每一步的结果。输出格式参照示例。
【输出示例】
当前课间操站位网格: 1班-1号 | 1班-2号 | 1班-3号 | 1班-4号 | 1班-5号 2班-1号 | 2班-2号 | 2班-3号 | 2班-4号 | 2班-5号 3班-1号 | 3班-2号 | 3班-3号 | 3班-4号 | 3班-5号 共 3 个班级,每班 5 人 定位测试: 2班3号位置: 2班-3号 5班1号位置: 位置不存在 交换位置测试: 已交换: (1, 2) 和 (3, 4) 的位置 当前课间操站位网格: 1班-1号 | 3班-4号 | 1班-3号 | 1班-4号 | 1班-5号 2班-1号 | 2班-2号 | 2班-3号 | 2班-4号 | 2班-5号 3班-1号 | 3班-2号 | 3班-3号 | 1班-2号 | 3班-5号 共 3 个班级,每班 5 人 新增班级测试: 新增 4班 完成 当前课间操站位网格: 1班-1号 | 3班-4号 | 1班-3号 | 1班-4号 | 1班-5号 2班-1号 | 2班-2号 | 2班-3号 | 2班-4号 | 2班-5号 3班-1号 | 3班-2号 | 3班-3号 | 1班-2号 | 3班-5号 4班-1号 | 4班-2号 | 4班-3号 | 4班-4号 | 4班-5号 共 4 个班级,每班 5 人 网格遍历演示: 1班-1号 | 3班-4号 | 1班-3号 | 1班-4号 | 1班-5号 | 2班-1号 | 2班-2号 | 2班-3号 | 2班-4号 | 2班-5号 | 3班-1号 | 3班-2号 | 3班-3号 | 1班-2号 | 3班-5号 | 4班-1号 | 4班-2号 | 4班-3号 | 4班-4号 | 4班-5号 |
试题4:垃圾分类知识库
【题目描述】
设计一个垃圾分类查询系统,使用哈希表存储垃圾名称与类别。初始垃圾数据如下:
('香蕉皮', '厨余垃圾')
('电池', '有害垃圾')
('报纸', '可回收物')
('塑料袋', '其他垃圾')
('苹果核', '厨余垃圾')
('玻璃瓶', '可回收物')
('药品', '有害垃圾')
('纸巾', '其他垃圾')
('鱼骨头', '厨余垃圾')
要求:
- 构建哈希表,桶大小为5,使用链地址法处理冲突。
- 输出哈希表结构(每个桶的内容)。
- 查询以下垃圾的类别:
'香蕉皮','电池','塑料袋','未知垃圾'。
【题目要求】
按照上述要求输出哈希表结构和查询结果。输出格式参照示例。
【输出示例】
垃圾分类哈希表结构: 桶[0]: [['香蕉皮', '厨余垃圾'], ['苹果核', '厨余垃圾'], ['鱼骨头', '厨余垃圾']] 桶[1]: [['报纸', '可回收物'], ['玻璃瓶', '可回收物']] 桶[2]: [['电池', '有害垃圾'], ['药品', '有害垃圾']] 桶[3]: [['塑料袋', '其他垃圾'], ['纸巾', '其他垃圾']] 桶[4]: [] 垃圾分类查询测试: '香蕉皮' 属于: 厨余垃圾 '电池' 属于: 有害垃圾 '塑料袋' 属于: 其他垃圾 '未知垃圾' 属于: 未知垃圾 哈希桶类别分布: 桶[0]: 厨余垃圾 桶[1]: 可回收物 桶[2]: 有害垃圾 桶[3]: 其他垃圾 桶[4]: 未知垃圾
试题5:音乐播放列表
【题目描述】
使用链表实现一个音乐播放列表。每首歌曲包含标题和歌手。初始播放列表为空。请依次执行以下操作:
- 添加歌曲:
'稻香'– 周杰伦,'海阔天空'– Beyond,'晴天'– 周杰伦。 - 显示当前播放列表。
- 删除歌曲
'稻香'。 - 显示当前播放列表。
- 添加歌曲
'夜曲'– 周杰伦。 - 显示当前播放列表。
【题目要求】
实现链表及其操作,按照上述步骤输出结果。输出格式参照示例。
【输出示例】
当前播放列表: 1. 稻香 - 周杰伦 2. 海阔天空 - Beyond 3. 晴天 - 周杰伦 已删除歌曲: 稻香 当前播放列表: 1. 海阔天空 - Beyond 2. 晴天 - 周杰伦 当前播放列表: 1. 海阔天空 - Beyond 2. 晴天 - 周杰伦 3. 夜曲 - 周杰伦
试题6:智能家居设备网络
【题目描述】
使用图结构模拟智能家居设备网络。设备有唯一ID和名称。初始设备:d1客厅主灯、d2卧室空调、d3智能音箱、d4门锁、d5路由器。建立以下连接(双向):
d1-d5, d2-d5, d3-d5, d4-d3, d1-d3
要求:
- 从
d5开始进行广度优先遍历,输出遍历顺序。 - 找出从
d1到d4的最短路径。 - 检查网络是否完全连通。
- 断开
d3与d5的连接后,再次检查连通性。
【题目要求】
按照上述步骤输出结果。输出格式参照示例。
【输出示例】
BFS遍历顺序: ['d5', 'd1', 'd2', 'd3', 'd4'] 客厅主灯到门锁的最短路径: ['d1', 'd3', 'd4'] 网络是否完全连通: True 断开连接后网络是否连通: True
试题7:图书馆找书系统
【题目描述】
实现一个线性查找程序,在书籍列表中查找目标书编号。书籍列表为 ['LIB003', 'LIB015', 'LIB007', 'LIB001', 'LIB012', 'LIB009']。用户输入书编号,程序输出查找过程及结果。
要求:
- 循环接收用户输入,直到输入
'q'退出。 - 每次查找,输出每一步检查的书名。
- 如果找到,输出位置;否则输出未找到。
【题目要求】
编写程序,模拟交互过程。给定输入序列如:LIB001, LIB020, q。输出参照示例。
【输出示例】
=== 图书馆找书系统 === 当前书架上的书编号: ['LIB003', 'LIB015', 'LIB007', 'LIB001', 'LIB012', 'LIB009'] 请输入要查找的书编号(输入q退出):LIB001 正在检查第0个位置的书:LIB003 正在检查第1个位置的书:LIB015 正在检查第2个位置的书:LIB007 正在检查第3个位置的书:LIB001 找到啦!LIB001 在第 3 个位置 请输入要查找的书编号(输入q退出):LIB020 正在检查第0个位置的书:LIB003 正在检查第1个位置的书:LIB015 正在检查第2个位置的书:LIB007 正在检查第3个位置的书:LIB001 正在检查第4个位置的书:LIB012 正在检查第5个位置的书:LIB009 没找到 LIB020,可能已经被借走了 请输入要查找的书编号(输入q退出):q 谢谢使用,再见!
试题8:全班身高排队系统
【题目描述】
使用冒泡排序对班级身高数据进行排序。初始身高列表为 [135, 142, 128, 145, 130, 138]。要求输出每一轮排序的过程,以及最终排序结果。
【题目要求】
实现冒泡排序算法,并输出每一轮比较和交换的过程。输出格式参照示例(可适当简化中间轮次,但需体现完整过程)。
【输出示例】
=== 全班身高排队系统 ===
原始队伍顺序: [135, 142, 128, 145, 130, 138]
开始冒泡排序...
=== 第 1 轮排序 ===
比较 135 和 142 → 保持不动
比较 142 和 128 → 需要交换 → [135, 128, 142, 145, 130, 138]
比较 142 和 145 → 保持不动
比较 145 和 130 → 需要交换 → [135, 128, 142, 130, 145, 138]
比较 145 和 138 → 需要交换 → [135, 128, 142, 130, 138, 145]
第 1 轮结果:[135, 128, 142, 130, 138, 145]
当前队伍顺序:135 → 128 → 142 → 130 → 138 → 145
=== 第 2 轮排序 ===
比较 135 和 128 → 需要交换 → [128, 135, 142, 130, 138, 145]
比较 135 和 142 → 保持不动
比较 142 和 130 → 需要交换 → [128, 135, 130, 142, 138, 145]
比较 142 和 138 → 需要交换 → [128, 135, 130, 138, 142, 145]
第 2 轮结果:[128, 135, 130, 138, 142, 145]
当前队伍顺序:128 → 135 → 130 → 138 → 142 → 145
=== 第 3 轮排序 ===
比较 128 和 135 → 保持不动
比较 135 和 130 → 需要交换 → [128, 130, 135, 138, 142, 145]
比较 135 和 138 → 保持不动
第 3 轮结果:[128, 130, 135, 138, 142, 145]
当前队伍顺序:128 → 130 → 135 → 138 → 142 → 145
=== 第 4 轮排序 ===
比较 128 和 130 → 保持不动
比较 130 和 135 → 保持不动
第 4 轮结果:[128, 130, 135, 138, 142, 145]
当前队伍顺序:128 → 130 → 135 → 138 → 142 → 145
=== 第 5 轮排序 ===
比较 128 和 130 → 保持不动
第 5 轮结果:[128, 130, 135, 138, 142, 145]
当前队伍顺序:128 → 130 → 135 → 138 → 142 → 145
最终排序结果: [128, 130, 135, 138, 142, 145]
试题9:音乐播放列表的热门排序
【题目描述】
使用插入排序对歌曲按播放次数从小到大排序。给定歌曲列表:
[{'name': '小星星', 'plays': 150},
{'name': '两只老虎', 'plays': 200},
{'name': '生日快乐', 'plays': 80},
{'name': '童年', 'plays': 300},
{'name': '茉莉花', 'plays': 120}]
要求输出每一轮排序后的歌曲名称顺序,以及最终排序结果。
【题目要求】
实现插入排序算法,输出每一步的排序结果。输出格式参照示例。
【输出示例】
原始播放列表: ['小星星', '两只老虎', '生日快乐', '童年', '茉莉花'] 第1轮排序后: ['小星星', '两只老虎', '生日快乐', '童年', '茉莉花'] 第2轮排序后: ['生日快乐', '小星星', '两只老虎', '童年', '茉莉花'] 第3轮排序后: ['生日快乐', '小星星', '两只老虎', '童年', '茉莉花'] 第4轮排序后: ['生日快乐', '茉莉花', '小星星', '两只老虎', '童年'] 按热度排序后的播放列表: 生日快乐: 80次播放 茉莉花: 120次播放 小星星: 150次播放 两只老虎: 200次播放 童年: 300次播放
试题10:生日礼物分类
【题目描述】
使用归并排序对礼物大小进行排序。礼物列表为 [15, 3, 8, 20, 5, 12, 10, 7]。要求输出排序后的结果。
【题目要求】
实现归并排序算法,输出最终排序结果。
【输出示例】
原始礼物顺序: [15, 3, 8, 20, 5, 12, 10, 7] 排序后礼物顺序: [3, 5, 7, 8, 10, 12, 15, 20]
试题11:游戏装备属性筛选
【题目描述】
给定装备列表,每个装备有名称、攻击力、防御力、稀有度、重量。要求按以下规则排序:
- 优先稀有度降序,
- 稀有度相同则攻击力降序,
- 攻击力相同则重量升序。
装备数据如下:
[{"name": "王者之剑", "attack": 120, "defense": 30, "rarity": 5, "weight": 8},
{"name": "精灵之弓", "attack": 95, "defense": 15, "rarity": 4, "weight": 3},
{"name": "巨龙铠甲", "attack": 30, "defense": 150, "rarity": 5, "weight": 12},
{"name": "新手木剑", "attack": 10, "defense": 5, "rarity": 1, "weight": 2},
{"name": "魔法法杖", "attack": 80, "defense": 20, "rarity": 3, "weight": 4},
{"name": "暗影匕首", "attack": 95, "defense": 10, "rarity": 4, "weight": 1},
{"name": "圣光盾牌", "attack": 15, "defense": 120, "rarity": 4, "weight": 7}]
要求输出排序后的装备名称及关键属性。
【题目要求】
使用多条件排序,输出排序结果。输出格式参照示例。
【输出示例】
排序条件:稀有度↓ 攻击力↓ 重量↑ 王者之剑 稀有度:5星 攻击:120 重量:8 巨龙铠甲 稀有度:5星 攻击: 30 重量:12 暗影匕首 稀有度:4星 攻击: 95 重量:1 精灵之弓 稀有度:4星 攻击: 95 重量:3 圣光盾牌 稀有度:4星 攻击: 15 重量:7 魔法法杖 稀有度:3星 攻击: 80 重量:4 新手木剑 稀有度:1星 攻击: 10 重量:2
试题12:智能垃圾桶满载预警
【题目描述】
使用滑动窗口检测垃圾高度数据中的连续上升并达到局部最高点的预警点。给定数据 [15, 18, 22, 20, 25, 27, 30],窗口大小为3。要求找出所有预警点(即窗口内连续上升且窗口后一个数据下降或到达末尾的窗口最高点位置)。输出预警点的索引和对应高度。
【题目要求】
实现滑动窗口检测算法,输出结果。
【输出示例】
垃圾高度记录: [15, 18, 22, 20, 25, 27, 30] 预警时间点(索引): [2, 6] 对应的高度值: [22, 30]
试题13:朋友圈关系图
【题目描述】
构建一个简单的社交网络图,节点为人名,边为认识关系。初始节点:小明、小红、小刚、小华。关系:小明认识小红和小刚,小红认识小明和小刚,小刚认识所有人,小华只认识小刚。
要求:
- 输出邻接表表示。
- 输出邻接矩阵表示。
- 查询小明的朋友。
- 判断小红和小刚是否认识。
- 找出小明和小红的共同朋友。
【题目要求】
实现图的基本操作,输出结果。输出格式参照示例。
【输出示例】
添加节点: 小明
添加节点: 小红
添加节点: 小刚
添加节点: 小华
添加边: 小明 - 小红
添加边: 小明 - 小刚
添加边: 小红 - 小刚
添加边: 小华 - 小刚
朋友圈关系图(邻接表表示):
小明 的朋友: ['小红', '小刚']
小红 的朋友: ['小明', '小刚']
小刚 的朋友: ['小明', '小红', '小华']
小华 的朋友: ['小刚']
朋友圈关系图(邻接矩阵表示):
小明 小红 小刚 小华
小明 [0, 1, 1, 0]
小红 [1, 0, 1, 0]
小刚 [1, 1, 0, 1]
小华 [0, 0, 1, 0]
--- 查询操作演示 ---
小明的朋友: ['小红', '小刚']
小红和小刚是朋友吗? True
小红和小华是朋友吗? False
小明和小红的共同朋友: {'小刚'}
试题14:迷宫逃生
【题目描述】
给定一个5×5的迷宫,0表示通路,1表示墙壁。起点为(0,0),终点为(4,4)。使用深度优先搜索(DFS)找出一条逃生路径,并输出路径坐标和可视化路径。
迷宫数据:
[[0,1,0,0,0],
[0,1,0,1,0],
[0,0,0,1,0],
[0,1,1,1,0],
[0,0,0,0,0]]
要求输出找到的路径坐标,以及用@标记路径的迷宫可视化。
【题目要求】
实现DFS算法,输出结果。输出格式参照示例。
【输出示例】
迷宫布局: [0, 1, 0, 0, 0] [0, 1, 0, 1, 0] [0, 0, 0, 1, 0] [0, 1, 1, 1, 0] [0, 0, 0, 0, 0] 起点: (0, 0), 终点: (4, 4) 逃生路径找到啦! 路径坐标: [(0, 0), (1, 0), (2, 0), (2, 1), (2, 2), (1, 2), (0, 2), (0, 3), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4)] 可视化路径 (@表示逃生路线): @ . . . . @ . @ . . @ @ @ . . . . . . . . . . . @ (注:实际输出中墙壁用|表示,通路用.,路径用@,此处简化示意)
试题15:社交网络好友推荐
【题目描述】
给定一个社交网络图(邻接表表示),找出从用户'小明'到用户'小红'的最短好友关系链(即最短路径)。社交网络图如下:
{'小明': ['小王', '小张', '小李'],
'小王': ['小明', '小赵', '小刘'],
'小张': ['小明', '小刘', '小陈'],
'小李': ['小明', '小陈', '小孙'],
'小赵': ['小王', '小孙'],
'小刘': ['小王', '小张', '小孙'],
'小陈': ['小张', '小李', '小红'],
'小孙': ['小李', '小赵', '小刘', '小红'],
'小红': ['小陈', '小孙', '小吴'],
'小吴': ['小红']}
要求输出最短路径和介绍次数。
【题目要求】
使用BFS算法,输出结果。
【输出示例】
查找从 [小明] 到 [小红] 的最短关系链: ✓ 找到最短关系链! 路径: 小明 → 小张 → 小陈 → 小红 介绍次数: 2
试题16:校园导航
【题目描述】
给定校园地图(加权无向图),计算从宿舍到校门的最短路径及距离。地图数据(邻接表):
{'宿舍': {'食堂': 3, '教学楼A': 7},
'食堂': {'宿舍': 3, '教学楼A': 2, '图书馆': 6},
'教学楼A': {'宿舍': 7, '食堂': 2, '教学楼B': 3, '体育馆': 5},
'教学楼B': {'教学楼A': 3, '图书馆': 4, '体育馆': 2},
'图书馆': {'食堂': 6, '教学楼B': 4, '体育馆': 3, '校门': 8},
'体育馆': {'教学楼A': 5, '教学楼B': 2, '图书馆': 3, '操场': 4},
'操场': {'体育馆': 4, '校门': 5},
'校门': {'图书馆': 8, '操场': 5}}
要求输出从宿舍到校门的最短距离和路径,以及宿舍到各地点最短距离。
【题目要求】
实现Dijkstra算法,输出结果。输出格式参照示例。
【输出示例】
从【宿舍】到【校门】的最短路径: 最短距离: 17 单位 最短路径: 宿舍 → 食堂 → 图书馆 → 校门 从【宿舍】到各地点最短距离: - 体育馆: 10 单位 (路径: 宿舍 → 食堂 → 教学楼A → 体育馆) - 图书馆: 9 单位 (路径: 宿舍 → 食堂 → 图书馆) - 操场: 14 单位 (路径: 宿舍 → 食堂 → 教学楼A → 体育馆 → 操场) - 教学楼A: 5 单位 (路径: 宿舍 → 食堂 → 教学楼A) - 教学楼B: 8 单位 (路径: 宿舍 → 食堂 → 教学楼A → 教学楼B) - 校门: 17 单位 (路径: 宿舍 → 食堂 → 图书馆 → 校门) - 食堂: 3 单位 (路径: 宿舍 → 食堂)
试题17:小区宽带光纤铺设
【题目描述】
某小区有6个居民区(编号0-5),需要铺设光纤网络,连接所有居民区,且总成本最小。可能的铺设路径及成本如下(每条边为(u,v,w)):
(0,1,4), (0,2,1), (0,3,5),
(1,2,2), (1,4,3), (2,3,6),
(2,4,7), (3,4,8), (3,5,2),
(4,5,9)
要求使用Kruskal算法求最小生成树,输出选择的边和总成本。
【题目要求】
实现Kruskal算法,输出结果。
【输出示例】
小区光纤铺设问题:连接6个居民区的最小成本方案 居民区之间的铺设成本: 居民区0 - 居民区1: 成本4万元 居民区0 - 居民区2: 成本1万元 居民区0 - 居民区3: 成本5万元 居民区1 - 居民区2: 成本2万元 居民区1 - 居民区4: 成本3万元 居民区2 - 居民区3: 成本6万元 居民区2 - 居民区4: 成本7万元 居民区3 - 居民区4: 成本8万元 居民区3 - 居民区5: 成本2万元 居民区4 - 居民区5: 成本9万元 最小生成树边(最优铺设路线): 路线1: 居民区0 - 居民区2, 成本: 1万元 路线2: 居民区1 - 居民区2, 成本: 2万元 路线3: 居民区3 - 居民区5, 成本: 2万元 路线4: 居民区1 - 居民区4, 成本: 3万元 路线5: 居民区0 - 居民区3, 成本: 5万元 总最小成本: 13万元
试题18:课程选修顺序安排
【题目描述】
给定课程数量及先修关系,判断是否能完成所有课程,并给出一个合理的学习顺序。测试用例:
- 3门课程,先修关系:
[[1,0],[2,1]](0→1→2) - 4门课程,先修关系:
[[1,0],[2,0],[3,1],[3,2]] - 3门课程,先修关系:
[[1,0],[2,1],[0,2]](有环)
要求对每个测试用例输出学习顺序或提示有环。
【题目要求】
实现拓扑排序算法,输出结果。
【输出示例】
=== 课程安排测试 === 测试1 - 简单线性依赖: 课程数量: 3, 先修要求: [[1, 0], [2, 1]] 学习顺序: [0, 1, 2] 测试2 - 复杂依赖关系: 课程数量: 4, 先修要求: [[1, 0], [2, 0], [3, 1], [3, 2]] 学习顺序: [0, 1, 2, 3] 测试3 - 循环依赖检测: 课程数量: 3, 先修要求: [[1, 0], [2, 1], [0, 2]] 学习顺序: [] 检测到循环依赖,无法完成所有课程!
试题19:课堂时间安排
【题目描述】
使用贪心算法解决活动安排问题,选择最多的不冲突活动。给定活动列表(活动名,开始时间,结束时间):
[('语文', 800, 900),
('数学', 830, 1000),
('英语', 900, 1000),
('物理', 1000, 1100),
('化学', 1030, 1130),
('生物', 1100, 1200)]
要求输出选择的活动及最多可安排的活动数。
【题目要求】
按结束时间排序贪心选择,输出结果。
【输出示例】
今日活动安排: 活动名称 开始时间 结束时间 语文 800 900 英语 900 1000 物理 1000 1100 生物 1100 1200 最多可安排 4 个活动
试题20:硬币找零问题
【题目描述】
给定不同面额的硬币,用最少数量的硬币凑出指定金额。
要求:
- 在中国货币体系(面额
[100,50,10,5,2,1]分)下,用贪心算法凑出136分,输出过程及结果。 - 在特殊币制(面额
[4,3,1])下,用贪心算法凑出6分,并指出贪心算法是否最优(给出最优解)。 - 对特殊币制,用动态规划求解最优解。
【题目要求】
分别实现贪心算法和动态规划,输出对比结果。输出格式参照示例。
【输出示例】
=== 贪心算法在硬币找零问题中的应用与局限性 ===
案例1:中国货币体系(贪心算法有效)
找零 136 分,硬币面额: [100, 50, 10, 5, 2, 1]
贪心策略过程:
使用 100 分硬币 1 枚,剩余金额: 36 分
使用 10 分硬币 3 枚,剩余金额: 6 分
使用 5 分硬币 1 枚,剩余金额: 1 分
使用 1 分硬币 1 枚,剩余金额: 0 分
找零成功! 总共需要 6 枚硬币
找零方案: {100: 1, 10: 3, 5: 1, 1: 1}
案例2:特殊币制(贪心算法可能失效)
找零 6 分,硬币面额: [4, 3, 1]
贪心策略过程:
使用 4 分硬币 1 枚,剩余金额: 2 分
使用 1 分硬币 2 枚,剩余金额: 0 分
找零成功! 总共需要 3 枚硬币
贪心算法结果: {4: 1, 1: 2},需要 3 枚硬币
但最优解应该是: {3: 2},只需要 2 枚硬币
✗ 贪心算法未能得到最优解!
案例3:动态规划解决特殊币制问题
动态规划最优解: {3: 2},需要 2 枚硬币
试题21:斐波那契数列
【题目描述】
使用动态规划(递推)计算斐波那契数列第n项。要求计算第10项,并输出前10项。
【题目要求】
实现动态规划算法,输出结果。
【输出示例】
斐波那契数列第10项的值:55 数列前10项: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
试题22:背包问题
【题目描述】
使用0-1背包模型解决传统文化礼品选择问题。背包容量为10,礼品有:
- 紫砂壶(空间2,价值5)
- 文房四宝(空间3,价值7)
- 丝绸围巾(空间4,价值8)
- 茶叶礼盒(空间5,价值9)
要求输出最大文化价值、选择的礼品列表及DP表格。
【题目要求】
实现动态规划算法,输出结果。
【输出示例】
传统文化礼品选择优化方案: 行李箱容量:10 最大文化价值:21 选择的礼品: 茶叶礼盒:占用空间5,文化价值9 文房四宝:占用空间3,文化价值7 紫砂壶:占用空间2,文化价值5 总占用空间:10 DP表格(部分): 各容量: 0 1 2 3 4 5 6 7 8 9 10 物品0: 0 0 0 0 0 0 0 0 0 0 0 物品1: 0 0 5 5 5 5 5 5 5 5 5 物品2: 0 0 5 7 7 12 12 12 12 12 12 物品3: 0 0 5 7 8 12 13 15 15 20 20 物品4: 0 0 5 7 8 12 13 15 16 20 21
试题23:周末活动规划
【题目描述】
对比贪心算法和动态规划在活动选择问题上的表现。活动列表(时间,快乐值,名称):
(3,8,'看电影'), (2,5,'运动'), (4,10,'读书'), (1,1,'打游戏')
总可用时间6小时。
要求:
- 用贪心算法(按单位时间快乐值降序)选择活动,输出过程和结果。
- 用动态规划(0-1背包)选择活动,输出过程和结果。
- 对比两种算法的结果。
【题目要求】
实现两种算法,输出对比结果。输出格式参照示例。
【输出示例】
周末活动规划算法对比
可选活动:
活动1: 看电影 - 3小时,快乐值8,单位价值2.67
活动2: 运动 - 2小时,快乐值5,单位价值2.50
活动3: 读书 - 4小时,快乐值10,单位价值2.50
活动4: 打游戏 - 1小时,快乐值1,单位价值1.00
总可用时间: 6小时
>>> 贪心算法求解 <<<
贪心算法执行过程:
按单位时间快乐值排序结果:
1. 看电影: 3小时, 快乐值8, 单位价值2.67
2. 运动: 2小时, 快乐值5, 单位价值2.50
3. 读书: 4小时, 快乐值10, 单位价值2.50
4. 打游戏: 1小时, 快乐值1, 单位价值1.00
开始选择活动:
✅ 选择看电影,用时3小时,获得快乐值8
已用时间: 3小时,累计快乐值: 8
✅ 选择运动,用时2小时,获得快乐值5
已用时间: 5小时,累计快乐值: 13
❌ 跳过读书(时间不足)
✅ 选择打游戏,用时1小时,获得快乐值1
已用时间: 6小时,累计快乐值: 14
贪心算法结果:
总快乐值: 14
选择的活动:
看电影: 3小时,快乐值8
运动: 2小时,快乐值5
打游戏: 1小时,快乐值1
>>> 动态规划求解 <<<
动态规划填表过程:
考虑活动1: 看电影(时间3,快乐值8)
时间3小时: 选择看电影,快乐值从0增加到8
时间4小时: 选择看电影,快乐值从0增加到8
时间5小时: 选择看电影,快乐值从0增加到8
时间6小时: 选择看电影,快乐值从0增加到8
考虑活动2: 运动(时间2,快乐值5)
时间2小时: 选择运动,快乐值从0增加到5
时间5小时: 选择运动,快乐值从8增加到13
时间6小时: 选择运动,快乐值从8增加到13
考虑活动3: 读书(时间4,快乐值10)
时间4小时: 选择读书,快乐值从8增加到10
时间6小时: 选择读书,快乐值从13增加到15
考虑活动4: 打游戏(时间1,快乐值1)
时间1小时: 选择打游戏,快乐值从0增加到1
动态规划结果:
总快乐值: 15
选择的活动:
运动: 2小时,快乐值5
读书: 4小时,快乐值10
>>> 算法对比分析 <<<
贪心算法结果: 14
动态规划结果: 15
🔍 算法结果差异: 1
贪心算法未能找到全局最优解!
试题24:电视节目选择
【题目描述】
使用区间调度贪心算法,计算最多能完整观看的电视节目数量。给定节目列表(按开始和结束时间):
测试用例1:[[1,3],[2,4],[3,5],[4,6]]
测试用例2:[[6,8],[5,9],[1,2],[3,4],[7,10]]
要求输出每个测试用例的排序后节目表、选择过程及最多节目数。
【题目要求】
实现贪心算法,输出结果。
【输出示例】
=== 测试用例1 === 排序后的节目表:[[1, 3], [2, 4], [3, 5], [4, 6]] 首先选择节目:[1, 3],结束时间为:3 跳过节目:[2, 4](与已选节目时间冲突) 选择节目:[3, 5],结束时间更新为:5 跳过节目:[4, 6](与已选节目时间冲突) 最多可以观看 2 个节目 === 测试用例2 === 排序后的节目表:[[1, 2], [3, 4], [6, 8], [5, 9], [7, 10]] 首先选择节目:[1, 2],结束时间为:2 选择节目:[3, 4],结束时间更新为:4 选择节目:[6, 8],结束时间更新为:8 跳过节目:[5, 9](与已选节目时间冲突) 跳过节目:[7, 10](与已选节目时间冲突) 最多可以观看 3 个节目
试题25:素数判断算法优化
【题目描述】
实现三种素数判断算法:基础暴力法、平方根优化法、6k±1优化法。要求:
- 对给定的测试数字
[2,3,10,97,1009,10000]验证正确性。 - 统计1到100000之间的素数个数,并比较三种算法的运行时间。
【题目要求】
输出验证结果和性能比较。
【输出示例】
素数判断算法性能比较 ================================================== 正确性验证: 数字 2: 基础法=True, 平方根法=True, 6k法=True 数字 3: 基础法=True, 平方根法=True, 6k法=True 数字 10: 基础法=False, 平方根法=False, 6k法=False 数字 97: 基础法=True, 平方根法=True, 6k法=True 数字 1009: 基础法=True, 平方根法=True, 6k法=True 数字 10000: 基础法=False, 平方根法=False, 6k法=False 性能测试(统计1到100000的素数个数): -------------------------------------------------- 基础暴力法: 素数个数=9592, 耗时=24.9925秒 平方根优化法: 素数个数=9592, 耗时=0.0739秒 6k±1优化法: 素数个数=9592, 耗时=0.0643秒
试题26:斐波那契数列内存优化
【题目描述】
对比使用数组存储(O(n)空间)和使用滚动变量(O(1)空间)两种方法计算斐波那契数列第n项。要求:
- 分别计算 F(10) 和 F(40) 的结果。
- 输出两种方法的运行时间对比。
【题目要求】
实现两种算法,输出结果和时间对比。
【输出示例】
================================================== 计算 F(10) 的性能对比: 优化版本: 结果=55, 时间=0.000008秒 基础版本: 结果=55, 时间=0.000008秒 时间比率: 1.06倍 ================================================== 计算 F(40) 的性能对比: 优化版本: 结果=102334155, 时间=0.000005秒 基础版本: 结果=102334155, 时间=0.000009秒 时间比率: 1.86倍
试题27:列表与字典
【题目描述】
设计一个班级学生生日档案管理系统,使用列表和字典两种数据结构存储学生信息。给定学生数据:
[("张三","2008-03-15"),("李四","2009-07-22"),("王五","2008-11-30"),
("赵六","2009-05-18"),("钱七","2008-12-25"),("孙八","2009-09-03"),
("周九","2008-06-12"),("吴十","2009-02-28")]
要求:
- 分别用列表和字典存储。
- 允许用户输入姓名查询生日,并显示两种方式的查询耗时。
- 对比列表和字典的查询速度。
【题目要求】
实现交互式查询,输入'退出'结束。输出格式参照示例。
【输出示例】
=== 班级学生生日档案管理系统 === 已录入 8 名学生信息 当前所有学生信息: 1. 张三: 2008-03-15 2. 李四: 2009-07-22 3. 王五: 2008-11-30 4. 赵六: 2009-05-18 5. 钱七: 2008-12-25 6. 孙八: 2009-09-03 7. 周九: 2008-06-12 8. 吴十: 2009-02-28 请输入要查询的学生姓名(输入'退出'结束程序): 张三 查询结果:张三的生日是 2008-03-15 列表查询耗时:0.000009 秒 字典查询耗时:0.000005 秒 字典比列表快 1.9 倍! 请输入要查询的学生姓名(输入'退出'结束程序): 退出
试题28:太空探险队指挥官
【题目描述】
使用0-1背包动态规划解决能量块分配问题。能量舱容量为10,能量块有4种,体积分别为 [2,3,4,5],能量值分别为 [3,4,5,6]。要求输出动态规划表、最大能量值及选择的能量块。
【题目要求】
实现动态规划算法,输出结果。
【输出示例】
=== 能量块分配策略 === 能量舱总容量: 10 可用的能量块: 能量块1: 体积=2, 能量值=3 能量块2: 体积=3, 能量值=4 能量块3: 体积=4, 能量值=5 能量块4: 体积=5, 能量值=6 动态规划表(部分): 容量: 0 1 2 3 4 5 6 7 8 9 10 前0个: 0 0 0 0 0 0 0 0 0 0 0 前1个: 0 0 3 3 3 3 3 3 3 3 3 前2个: 0 0 3 4 4 7 7 7 7 7 7 前3个: 0 0 3 4 5 7 8 9 9 12 12 前4个: 0 0 3 4 5 7 8 9 10 12 13 === 最优分配方案 === 最大可获得能量: 13 选择的能量块: 能量块1: 体积=2, 能量值=3 能量块2: 体积=3, 能量值=4 能量块4: 体积=5, 能量值=6 使用总体积: 10/10

