# 2023 年 C++ 语言程序设计期末考试 编程题回忆 > by [@Maxwell Jay](https://github.com/MaxwellJay256), 2023.12 > > 时间隔得有点久了,回忆也只是个大概。 > > 试卷分数构成:单选题 2x20 = 40 分,填空题 1x20 = 20 分,编程题 4x10 = 40 分,共 100 分。 ## 三、编程题 ### 1. 使用模板函数实现下列功能:分别求一个数组里面数据的最大值、最小值和平均值,数据类型可以是整型、字符型或者浮点型。 ### 2. 设计一个产品类 `Product` 用于保存产品信息,并且满足以下要求: 1. 产品信息包含编号、单价以及数量。 2. 实现一个无参数的构造函数,编号、单价以及数量默认为 1,1,100。 3. 实现带有参数的构造函数,并且具备判断参数是否非负的功能。 4. 实现一个拷贝构造函数。 5. 实现能够分别返回三个信息的成员函数。 ### 3. 编写一个 `Fraction` 类用来表示分数,其中分母不能为 0,分子和分母都是整数,不要求能够约分。 通过重载运算符的方式实现两个分数的 + - * / 运算。 ### 4. 构造一个抽象基类 `Shape`,包含一个纯虚函数 `printArea()` 用于输出图形的面积。 从 `Shape` 派生出三个类 `Circle`、`Rectangle` 和 `Triangle`,分别用于表示圆形、矩形和三角形,并将 `printArea()` 函数在这三个类中分别实现。