C++编程考试重点:类定义与代码实现

需积分: 27 2 下载量 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++中的多个关键概念。