跳转至

Exercise Answer

基础语法与数据类型

1. 编写程序输出“Hello, World!”
要求:使用标准输出流 cout 实现。

2. 计算两个整数的和
要求:从用户输入读取两个整数,输出它们的和。

3. 交换两个变量的值
要求:不借助临时变量,使用算术或位运算实现。

4. 判断奇偶数
要求:输入一个整数,输出其为奇数或偶数。

5. 计算圆的面积
要求:输入半径,输出面积(保留两位小数)。

6. 温度转换
要求:将摄氏温度转换为华氏温度,公式为:
$$ F = C \times \frac{9}{5} + 32 $$

7. 计算数组平均值
要求:输入一个整数数组,输出其平均值。

8. 查找数组最大值
要求:遍历数组并返回最大值。

9. 反转字符串
要求:输入一个字符串,输出其反转结果。

10. 判断回文字符串
要求:检查字符串是否为回文(如“madam”)。


控制结构与循环

11. 打印乘法表
要求:输出 1 到 9 的乘法表。

12. 判断素数
要求:输入一个整数,判断是否为素数。

13. 计算阶乘
要求:递归或循环实现阶乘计算。

14. 斐波那契数列
要求:输出前 n 项斐波那契数列。

15. 猜数字游戏
要求:生成随机数,用户猜测并提示大小。

16. 打印菱形图案
要求:根据用户输入的行数打印菱形。

17. 计算最大公约数(GCD)
要求:使用辗转相除法实现。

18. 计算最小公倍数(LCM)
要求:基于 GCD 的结果计算 LCM。

19. 统计字符串中元音字母
要求:输入字符串,统计元音(a, e, i, o, u)的数量。

20. 打印素数区间
要求:输出给定区间内的所有素数。


函数与递归

21. 递归实现字符串反转
要求:不使用库函数,递归反转字符串。

22. 汉诺塔问题
要求:递归解决汉诺塔移动步骤。

23. 二分查找
要求:在有序数组中递归实现二分查找。

24. 计算幂函数
要求:递归计算 \(a^b\)。

25. 判断平衡二叉树
要求:检查二叉树是否平衡(高度差≤1)。

26. 十进制转二进制
要求:递归将十进制数转换为二进制字符串。

27. 计算组合数 C(n, k)
要求:递归或动态规划实现组合数计算。

28. 约瑟夫环问题
要求:模拟约瑟夫环的幸存者位置。

29. 快速排序
要求:递归实现快速排序算法。

30. 归并排序
要求:递归实现归并排序。


面向对象编程

31. 创建学生类
要求:包含姓名、学号、成绩属性,并实现成绩排序。

32. 银行账户类
要求:模拟存款、取款、查询余额操作。

33. 复数类运算
要求:实现复数的加减乘除运算。

34. 继承与多态
要求:基类“形状”,派生类“圆”“矩形”计算面积。

35. 运算符重载
要求:重载 + 运算符实现向量加法。

36. 友元函数
要求:使用友元函数访问类的私有成员。

37. 虚函数与动态绑定
要求:通过基类指针调用派生类方法。

38. 模板函数
要求:编写泛型函数求数组最大值。

39. 异常处理
要求:自定义异常处理除零错误。

40. 单例模式
要求:实现线程安全的单例类。


文件与标准库

41. 文件读写
要求:将用户输入写入文件,再读取输出。

42. 统计文件行数
要求:读取文本文件并统计行数。

43. CSV 文件解析
要求:读取 CSV 文件并存储为结构体数组。

44. 随机数生成
要求:生成 10 个随机数并存入文件。

45. 字符串分割
要求:使用 std::stringstream 分割字符串。

46. 日期时间处理
要求:输出当前日期和时间(<chrono> 库)。

47. STL 容器排序
要求:使用 std::sort 对 vector 排序。

48. 使用 std::map
要求:统计单词在文本中的出现频率。

49. 正则表达式匹配
要求:验证邮箱格式是否合法。

50. 多线程计算
要求:使用 std::thread 并行计算数组和。


数据结构与算法

51. 链表反转
要求:迭代或递归实现单链表反转。

52. 栈实现括号匹配
要求:检查表达式中的括号是否匹配。

53. 队列模拟
要求:用队列模拟银行排队系统。

54. 二叉树遍历
要求:实现前序、中序、后序遍历。

55. 图的深度优先搜索(DFS)
要求:邻接表存储图并实现 DFS。

56. 图的广度优先搜索(BFS)
要求:邻接矩阵存储图并实现 BFS。

57. 哈希表实现
要求:自定义哈希函数解决冲突。

58. 堆排序
要求:基于 std::priority_queue 实现堆排序。

59. Dijkstra 算法
要求:求解单源最短路径。

60. 动态规划背包问题
要求:01 背包问题的动态规划解法。


高级特性与综合应用

61. 智能指针管理资源
要求:使用 std::unique_ptr 管理动态数组。

62. Lambda 表达式排序
要求:用 Lambda 实现自定义排序规则。

63. 多线程生产者-消费者模型
要求:使用互斥锁和条件变量实现。

64. 网络编程(TCP 客户端/服务端)
要求:基于 sockets 实现简单通信。

65. JSON 数据解析
要求:使用 nlohmann/json 库解析 JSON 文件。

66. 单元测试框架
要求:使用 Google Test 测试一个函数。

67. 设计模式(工厂模式)
要求:通过工厂类创建不同图形对象。

68. 内存池实现
要求:自定义内存池优化小对象分配。

69. 编译器词法分析器
要求:解析简单算术表达式的词法单元。

70. 模拟计算器
要求:支持加减乘除和括号的表达式求值。


实战项目

71. 学生成绩管理系统
要求:文件存储数据,支持增删改查。

72. 简易聊天室
要求:多线程实现多人文本聊天。

73. 贪吃蛇游戏
要求:基于控制台的交互式游戏。

74. 图书管理系统
要求:使用类和文件管理图书信息。

75. 迷宫求解
要求:DFS 或 BFS 找到迷宫出口路径。

76. 五子棋 AI
要求:实现简单棋盘评估算法。

77. 词频统计工具
要求:统计文本中单词频率并生成报表。

78. 简易数据库
要求:支持 SQL 语句的增删改查。

79. HTTP 服务器
要求:解析 GET 请求并返回静态文件。

80. 密码管理器
要求:加密存储账号密码信息。


附加挑战

81. 实现 std::vector
要求:自定义动态数组类模板。

82. 实现 std::string
要求:自定义字符串类并支持常用操作。

83. 并发哈希表
要求:线程安全的哈希表设计。

84. 遗传算法求解 TSP
要求:旅行商问题的遗传算法实现。

85. 机器学习线性回归
要求:梯度下降法实现线性回归。

86. 区块链模拟
要求:实现简单的区块哈希链。

87. 编译器语法分析器
要求:生成算术表达式的抽象语法树。

88. 操作系统内存分配器
要求:模拟 malloc 和 free 的底层逻辑。

89. 图像处理(边缘检测)
要求:使用 OpenCV 实现 Sobel 算子。

90. 神经网络手写数字识别
要求:基于 MNIST 数据集的简单模型。


调试与优化

91. 内存泄漏检测
要求:使用 Valgrind 检查程序内存泄漏。

92. 性能剖析
要求:用 gprof 分析程序热点函数。

93. 代码覆盖率测试
要求:使用 gcov 生成覆盖率报告。

94. 编译期计算
要求:模板元编程实现斐波那契数列。

95. SIMD 指令优化
要求:使用 AVX 指令加速数组求和。

96. 缓存友好代码
要求:优化二维数组遍历顺序。

97. 无锁队列实现
要求:基于原子操作实现多线程队列。

98. 编译器内联优化
要求:分析 inline 关键字的效果。

99. 异常处理开销
要求:对比异常与错误码的性能差异。

100. 二进制协议解析
要求:解析自定义二进制数据格式。