2024-2025秋-程序设计基础-试题回忆¶
说明
斜体为记忆不清部分
- pdf下载链接: 程序设计基础-试题回忆 PDF
一、选择题(4×10=40分)¶
1. C语言基础¶
关于c语言,下列哪个选项是错误的
- A. 注释只能写在语句后面
- B. c程序必须包含函数main
- C. c程序主要是由函数构成的
- D. 忘了
2. C++基础¶
关于c++下列选项错误的是
(选项缺失)
3. 类的构造函数¶
为了使下列程序正常编译,需要补充的是
class A{
public:
A(int a, int b): a(a), b(b) {}
private:
int a;
int b;
};
class B: public A{
/* 没啥东西*/
}
int main(){
A a;
B b;
/* blablabla */
}
- A. A的无参构造函数
- B. B的无参构造函数
- C. A的析构函数
- D. B的析构函数
4. 数组初始化¶
下列选项不能生成一个长度为5的数组的是
- A.
int a[] = {5}; - B.
int a[5] = {0}; - C.
int* a = new int[5]; - D.
int a[5] = {1,2,3,4,5};
5. 循环语句¶
下列哪个语句不能完成循环功能
- A. for
- B. do while
- C. while
- D. switch case
6. 纯虚函数¶
关于纯虚函数,下列选项错误的是
- A. 具有纯虚函数的类是抽象类,无法直接被实例化
- B. 抽象类的派生类一定不是抽象类
- C. 抽象类的派生类可以通过实现纯虚函数,来达到类的可实例化
7. 继承关系¶
类B保护继承了类A,类C保护继承了类B,则
- A. 类C包含类A的所有数据成员
- B. 类C中能直接调用类A的保护成员函数
- C. 类C中能直接调用类B的公开成员函数
- D. 类C继承了类A的构造函数
8. 标识符规则¶
标识符中不能含有以下哪个选项
- A. 间隔符
- B. 大小写字母
- C. 数字
- D. 下划线
二、编程题(3×10=30分)¶
1. 计程车(10分)¶
小明要搭乘计程车,计程车计费规则如下:
- 不超过3公里,只收起步费10元;
- 超过三公里,每公里收油费两元;
- 超过十公里,每公里收50%返程费,即每公里收费三元;
- 顾客每耽误司机5分钟,收取两元的误工费,不满五分钟不计该项费用。
输入格式:
行驶里程数(精确到一位小数) 顾客耽误的时间(整数)
输出格式:
总计费(四舍五入)
2. 数列元素求和plus(10分)¶
给定一个3的倍数n,接下来输入n个数字,要求以三个数字为一组,输出每组最大值之和。
输入格式:
数列长度(保证是三的倍数)
具体数列元素
输出格式:
每组元素之和
3. 打方块(10分)¶
小明想要玩打方块游戏,具体规则如下:
定义击打规则如下:
0
0#0
0
- "#"为击打的中心位置,该位置的方块直接被破坏;
- "0"为击打范围之内波及的区域,该位置的方块发生损伤,损伤的方块再被波及一次即会被破坏。
输入格式:
题目给定棋盘的行数M和列数N,接下来给出棋盘中的每个元素,例如:
// M=5, N=5
00###
#0#0#
##000
#0000
其中符号"#"代表此处存在方块,符号"0"代表此处不存在方块。
接下来给定击打的次数和具体的击打坐标(X,Y),(1<=X<=N, 1<=Y<=M)
输出格式:
被破坏的方块总数 被损伤的方块总数
输入案例:
5 5
00###
#0#0#
##000
#0000
3
1 3
2 3
4 1
三、函数题(30分)¶
1. 运算符重载(10分)¶
给出类的定义和裁判程序及其输出,完善类的构造函数,大于 >,小于 <,输入 >>,输出 << 符号。
2. 水果类的定义(10分)¶
需要构建以下两个类:
1. Fruit类
- 具有受保护的成员变量origin,类型为string
- 具有受保护的成员变量weight,类型为int
- 公开的构造函数
- 公开的show()函数
2. Apple类
- 私有的成员变量level,类型为int
- 公开的构造函数
- 公开的show()函数
3. 车辆限行政策(10分)¶
某地因为某种原因,需要实施车辆限行,具体规则如下:
新能源车:不受限行时段的影响。
燃油车:在限行时段按照以下规则限行:
- 周一:车牌尾号为1、6的车辆限行
- 周二:车牌尾号为2、7的车辆限行
- 周三:车牌尾号为3、8的车辆限行
- 周四:车牌尾号为4、9的车辆限行
- 周五:车牌尾号为5、0的车辆限行
- 周六、周日:不限行
裁判程序:
#include <iostream>
using namespace std;
class Vehicle {
protected:
int plateNumber;
int dayOfWeek;
bool isRestrictTime;
public:
Vehicle(int plate, int day, bool time) : plateNumber(plate), dayOfWeek(day), isRestrictTime(time) {}
virtual void isRestrict() = 0;
};
/* 你的答案 */
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int type, plate, day, time;
cin >> type >> plate >> day >> time;
Vehicle* vehicle;
if (type == 0) {
vehicle = new NewEnergyVehicle(plate, day, time);
} else {
vehicle = new FuelVehicle(plate, day, time);
}
if(vehicle->isRestrict())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
输入格式:
待判断的车辆数量
车辆类型(0:新能源车,1:燃油车) 车牌尾号 当前日期(1-7表示周一到周日) 是否在限行时段(0:不在限行时段,1:在限行时段)
输出格式:
每一行(限行与否)
Yes or No
输入案例:
4
2 1 1 1
1 2 1 1
1 4 2 0
1 0 5 1