C++编程考试重点:类定义与代码实现
需积分: 27 25 浏览量
更新于2024-07-17
收藏 33KB DOCX 举报
"这份文档包含了C++编程语言的经典考试习题,主要涉及类的定义、继承、友元函数、字符数组的赋值、控制流、函数模板以及递归计算序列和冒泡排序算法的应用。"
在提供的代码示例中,题目要求完成一个名为`MyClass`的类定义。类中有一个公共构造函数初始化`x`为0,同时还有一个名为`GetNum`的函数,这里需要填入适当的关键词以使代码正确工作。根据参考答案,`GetNum`应该是一个友元函数,接收一个`MyClass`类型的参数。完整的类定义如下:
```cpp
class MyClass {
public:
MyClass() {
x = 0;
}
friend int GetNum(MyClass my); // 使用friend关键字使GetNum成为类的友元函数
private:
int x;
};
int GetNum(MyClass my) { // 函数接受一个MyClass对象作为参数
return my.x;
}
```
第二个问题要求实现一个交通工具类及其公有派生类小车类`Car`。交通工具类应包含私有属性如车轮数和重量,而小车类`Car`需要增加一个私有属性——载人数,并提供相应的成员函数。以下是一个可能的实现:
```cpp
class Vehicle {
private:
int wheels;
double weight;
public:
Vehicle(int w, double wght) : wheels(w), weight(wght) {}
virtual void print() const {
std::cout << "Wheels: " << wheels << ", Weight: " << weight << std::endl;
}
};
class Car : public Vehicle {
private:
int passengers;
public:
Car(int w, double wght, int p) : Vehicle(w, wght), passengers(p) {}
void init(int w, double wght, int p) {
wheels = w;
weight = wght;
passengers = p;
}
int getPassenger() const {
return passengers;
}
void print() const override {
std::cout << "Wheels: " << wheels << ", Weight: " << weight << ", Passengers: " << passengers << std::endl;
}
};
```
第四个问题是一道关于字符数组赋值的判断题。选项d指出不能直接将一个数组赋值给另一个数组,这是正确的。其他选项中,字符数组可以通过不同方式赋值,如直接输入、使用strcpy函数或循环赋值。
第五个程序段的输出为13579,因为它使用了if-else结构,当i为偶数时执行continue跳过当前循环,只打印奇数。
第六个任务要求编写一个冒泡排序的函数模板,可以处理整型和双精度型数组。函数模板可能如下:
```cpp
template <typename T>
void bubbleSort(T arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
}
}
}
}
int main() {
int intArray[] = {5, 2, 8, 3, 1};
double doubleArray[] = {3.5, 1.2, 7.8, 2.1, 5.6};
int intSize = sizeof(intArray) / sizeof(intArray[0]);
double doubleSize = sizeof(doubleArray) / sizeof(doubleArray[0]);
bubbleSort(intArray, intSize);
bubbleSort(doubleArray, doubleSize);
// 打印排序后的数组
for (int i = 0; i < intSize; ++i) {
std::cout << intArray[i] << " ";
}
std::cout << std::endl;
for (int i = 0; i < doubleSize; ++i) {
std::cout << doubleArray[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
最后一个问题涉及递归计算序列。给出的代码片段是一个递归函数`fn1`,用于计算1到n的累加值。完整的程序如下:
```cpp
#include <iostream>
int fn1(int i) {
if (i == 1) {
return 1;
} else {
return i + fn1(i - 1);
}
}
int main() {
int n;
std::cout << "请输入一个正整数:";
std::cin >> n;
std::cout << "从1累加到" << n << "的结果是:" << fn1(n) << std::endl;
return 0;
}
```
以上就是针对文档内容提供的详细解释和代码示例,涵盖了C++中的多个关键概念。
2024-06-24 上传
2020-08-06 上传
2023-02-27 上传
2024-07-19 上传
2022-11-19 上传
2021-12-25 上传
2023-02-27 上传
2023-02-27 上传
时间的遗迹
- 粉丝: 0
- 资源: 1
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载