【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】

前言

大家好吖,欢迎来到 YY 滴C++考前速过系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁

主要内容含:

一.选择题(20)

  1. 类模板的模板参数( )。D
    A.只可作为数据成员的类型
    B.只可作为成员的返回值类型
    C.只可作为成员函数的参数类型
    D.以上三者皆可
  1. 如果有如下函数模板的定义:C
    A.func (3, 5) ;
    B.func<>(3,5)
    C.func(3, 2.5)
    D.func<int>(3 2.5):
  2. 如果try中不抛出异常,那么try块执行完后控制权会转向何处? A
    A.catch后的第一条语句
    B.catch语句块的第一条语句
    C.throw语句
    D.退出程序
  3. 模板的使用是为了( )。A
    A.提高代码的可至用性
    B.提高代码的运行效率
    C.加强类的封装性
    D.实现多态性
  4. C++处理异常的机制是由( )3部分组成。C
    A.编辑、编译和运行
    B.编辑、编译和捕获
    C.检查、抛出和捕获
    D.检查、抛出和运行

6.下面的那一条不是面向对象的重要特性?D

A.抽象和封装

B.多态

C.继承

D.对象

解析:

  • 面向对象的重要特性分别为:抽象、封装、继承、多态。
  1. 重载函数在调用时选择的依据,()是错误的B
    A.参数的类型
    B.参数的返回值类型
    C.参数的个数

8.【类和对象定义细节】类的成员访问限定符不包含( )。D

A.private:限定成员称为私有成员:私有成员的数据或区数使用受到类的限制,本类的成员函数可以访问,但类外不能访问

B.public:限定成员称为公有成员:公有成员的数据或函数不受类的限制,可以在类内或类外自由使用,本类的成员函数可以访问,类外也能访问

C.proteted:限定成员为保护成员,只允许在类内及该类的派生类中使用保护的数据或函数,即保护成员的作用域是该类及该类的派生类

D.const: 限定类的成员为常类型,不允许修改数据的值

9.【类和对象定义细节】以下有关类与结构体的叙述不正确的是( )C

A.结构体中只包含数据:类中封装了数据和操作

B.结构体的成员对外界通常是开放的;类的成员可以被隐藏

C.用struct不能声明一个类型名;而class可以声明一个类名

D.结构体成员默认为public;类成员默认为private

  1. 以下不属于构造函数特征的是( )。D
    A.构造函数名与类名相同
    B.构造函数可以重载
    C.构造函数可以设置默认参数
    D.构造函数必须指定函数类型
  2. 下列关于构造函数的说法错误的是( )。B
    A.构造函数的名字必须与类的名字相同
    B.构造函数可以定义为void类型
    C.构造函数可以重载、可以带有默认参数
    D.构造函数可以由用户自定义也可以由系统自动生成
  3. ( )的功能是对象进行初始化。C
    A.析构函数
    B.数据成员
    C.构造函数
    D.静态成员函数
  4. 类的析构函数的作用是()。D
    A.一般成员函数
    B.类的初始化
    C.对象初始化
    D.删除对象
  5. 继承具有( ),即当基类本身也是某一类的派生类时,底层的派生类也会自动继承间接基类的成员。B
    A.规律性
    B.传递性
    C.重复性
    D.多样性
  6. 基类中的( )不允许外界访问,但允许派生类的成员函数访问,这样既有一定的隐藏能力,又提供了开放的接口。D
    A.公有成员
    B.私有成员
    C.私有成员函数
    D.保护成员
  7. 动态多态的调用是指( )。C
    A.以任何方式调用一个虚函数
    B.以任何方式调用一个纯虚函数
    C.借助于指向对象的基类指针或引用调用一个虚函数
  8. 虚函数必须是类的( )。D
    A.友元函数
    B.构造函数
    C.析构函数
    D.成员函数
  9. 下列各函数的说明中,( )表示纯虚函数。C
    A.virtual int vf(int);
    B.void vf(int)=0.8;
    C.virtual void vf0=0;
    D.virtual void vf(int);
  10. 下列关于纯虚函数与抽象类的描述中,( )是错误的。C
    A.抽象类是指具有纯虚函数的类
    B.纯虚函数是一个特殊的虚函数,它没有具体的实现
    C.一个基类中具有纯虚函数,该基类的派生类一定不再是抽象类
    D.抽象类只能作为基类来用,其纯虚函数的实现由派生类给出
  11. 下列描述中,( )是抽象类的特征。D
    A.可以说明虚函数
    B.可以进行构造函数重载
    C.可以定义友元
    D.不能定义其对象


二.判断题(12)

PS:解析与答案在下面

  1. 函数模板又称为泛型函数、通用函数。
  2. 当程序中同时重载有函数模板和非函数模板时,编译器会优先选用模板函数。
  3. 可以从类模板派生出类模板,但不可以从类模板派生出非类模板。
  1. 函数模板可以重载。
  2. 类模板可以作为函数模板的返回类型。
  3. 一个try块可与多个catch语句(称为异常处理器)联系,每个catch语句处理一种类型的异常信息。
  4. 若没有catch语句与抛出异常的类型相匹配,则程序继续运行。
  5. 抛出异常的程序模块一旦抛出了异常,在处理完异常后,继续执行throw后面的语句。
  6. throw语句的一般形式为 throw 表达式; 也可以不带表达式 throw;
  7. 一个try块可与多个catch语句(称为异常处理器)联系,找到一个类型匹配的catch语句后,继续匹配后面的catch语句,可能执行多个catch语句。
  8. 构造函数和析构函数的执行顺序为先构造的后析构,后构造的先析构
  9. 析构函数是特殊的成员函数,它的作用与构造函数相反,完成程序结束前的清理工作。
  1. ×
  2. ×
  3. ×
  4. ×
  5. ×

三.代码题(2)

例题1:

  • 编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型,也可以是双精度型。
#include <iostream>

template <typename T>
void bubbleSort(T arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                T temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    
    for (int i = 0; i < size; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int intArray[] = {5, 3, 8, 2, 1, 6};
    double doubleArray[] = {5.6, 3.2, 8.9, 2.1, 1.5, 6.7};
    
    std::cout << "Sorted intArray: ";
    bubbleSort(intArray, 6);
    
    std::cout << "Sorted doubleArray: ";
    bubbleSort(doubleArray, 6);
    
    return 0;
}

例题2:

  • 定义员工类Employee,具有私有数据成员name,age,salary。
    在Employee类中设计一个input()成员函数,用于输入员工的name,age,salary,当age大于60小于18时,抛出一个异常。在catch()中显示相应的出错信息。
#include <iostream>
#include <string>

class Employee {
private:
    std::string name;
    int age;
    double salary;

public:
    void input() {
        std::cout << "Enter name: ";
        std::cin >> name;
        std::cout << "Enter age: ";
        std::cin >> age;
        if (age > 60 || age < 18) {
            throw "Invalid age";
        }
        std::cout << "Enter salary: ";
        std::cin >> salary;
    }
};

int main() {
    Employee emp;
    try {
        emp.input();
    }
    catch (const char* msg) {
        std::cerr << "Error: " << msg << std::endl;
    }
    return 0;
}


相关文章
|
25天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
2月前
|
搜索推荐 UED Python
实现一个带有昼夜背景切换的动态时钟:从代码到功能解析
本文介绍了一个使用Python和Tkinter库实现的动态时钟程序,具有昼夜背景切换、指针颜色随机变化及整点和半点报时功能。通过设置不同的背景颜色和随机变换指针颜色,增强视觉吸引力;利用多线程技术确保音频播放不影响主程序运行。该程序结合了Tkinter、Pygame、Pytz等库,提供了一个美观且实用的时间显示工具。欢迎点赞、关注、转发、收藏!
142 94
|
25天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
11天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
34 5
|
22天前
|
人工智能 文字识别 自然语言处理
保单AI识别技术及代码示例解析
车险保单包含基础信息、车辆信息、人员信息、保险条款及特别约定等关键内容。AI识别技术通过OCR、文档结构化解析和数据校验,实现对保单信息的精准提取。然而,版式多样性、信息复杂性、图像质量和法律术语解析是主要挑战。Python代码示例展示了如何使用PaddleOCR进行保单信息抽取,并提出了定制化训练、版式分析等优化方向。典型应用场景包括智能录入、快速核保、理赔自动化等。未来将向多模态融合、自适应学习和跨区域兼容性发展。
|
25天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
|
25天前
|
存储 程序员 C语言
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
|
2月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
457 11
|
4天前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
34 16
|
8天前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
51 6

热门文章

最新文章

推荐镜像

更多