专项练习 — 程序设计题
练习说明
- 共 8 道程序设计题,难度与模拟考试相当
- 建议每题用时 10~15 分钟
- 注意边界条件和输入验证
💻 程序设计题¶
第1题:回文数判断与生成
题目: 编写程序,判断一个整数是否为回文数,并找出指定范围内的所有回文数。
要求:
- 编写函数 is_palindrome(n),判断整数 n 是否为回文数(正读反读相同)
- 编写函数 find_palindromes(start, end),找出 [start, end] 范围内的所有回文数
- 负数不是回文数;个位数是回文数
- 不将数字转为字符串,使用数值方法实现
示例:
第2题:素数筛选与统计
题目: 编写程序,使用筛选法找出指定范围内的所有素数,并统计素数个数及占比。
要求:
- 编写函数 is_prime(n),判断 n 是否为素数
- 编写函数 prime_sieve(limit),使用埃拉托斯特尼筛法找出 [2, limit] 内所有素数
- 统计素数个数及占所有数字的比例
- 找出指定范围内最大的素数
示例:
第3题:数字拆分与重组
题目: 编写程序,对输入的正整数进行数字拆分、排序和重组操作。
要求:
- 编写函数 split_digits(n),将整数拆分为各位数字列表
- 编写函数 sort_digits(n),将各位数字升序排列并组成新的整数
- 编写函数 reverse_number(n),将整数各位数字反转
- 编写函数 max_min_diff(n),将数字重排为最大数和最小数,计算差值
示例:
第4题:字符串加密与解密
题目: 编写程序,实现两种字符串加密方式,并支持对应的解密。
要求: - 方式一:字母替换加密。将每个字母替换为字母表中后第 k 个字母(凯撒密码,k 由用户输入) - 方式二:反转加密。先将字符串反转,再对每个字符的 ASCII 码加 1 - 分别实现两种加密和解密函数 - 非字母字符保持不变(方式一);数字和标点也参与 ASCII 加 1(方式二)
示例:
第5题:列表数据筛选与统计
题目: 编写程序,对一组学生成绩数据进行筛选、排序和统计分析。
要求:
- 给定学生成绩列表:[("张三", 85), ("李四", 92), ("王五", 78), ("赵六", 95), ("钱七", 60), ("孙八", 88), ("周九", 45), ("吴十", 73)]
- 找出成绩最高和最低的学生
- 筛选出成绩及格(>=60)的学生,按成绩降序排列
- 计算平均分、及格率
- 按成绩分等级:优秀(>=90)、良好(>=80)、中等(>=70)、及格(>=60)、不及格(<60),统计各等级人数
示例:
第6题:斐波那契数列与最大公约数
题目: 编写程序,实现斐波那契数列生成和最大公约数/最小公倍数计算。
要求:
- 编写函数 fibonacci(n),返回前 n 个斐波那契数列表(F(1)=1, F(2)=1)
- 编写函数 gcd(a, b),使用辗转相除法求最大公约数
- 编写函数 lcm(a, b),利用 GCD 求最小公倍数
- 找出斐波那契数列前 20 项中相邻两项的最大公约数
示例:
第7题:CSV 文件读取与成绩排名
题目: 编写程序,从 CSV 文件中读取学生成绩,计算总分和平均分,按总分排名后写入新文件。
要求:
- 读取文件 scores.csv,格式为:姓名,语文,数学,英语(首行为表头)
- 计算每位学生的总分和平均分(保留1位小数)
- 按总分从高到低排序,添加排名列
- 计算每门课程的平均分
- 将排名结果和课程统计写入 rank.csv
输入文件 scores.csv 示例:
输出文件 rank.csv 示例:
第8题:图案打印
题目: 编写程序,根据输入的行数 n,打印多种对称图案。
要求:
- 编写函数 print_triangle(n),打印 n 行直角三角形
- 编写函数 print_diamond(n),打印 2n-1 行菱形(最宽处 2n-1 个字符)
- 编写函数 print_hollow_diamond(n),打印空心菱形
- 所有图案使用 * 字符,其余位置用空格
示例: