面向对象C++编程与实践考试题目

一、选择题(每题2分,共2×20=40分)

(1) 以下不能对数组 a 进行正确初始化的语句是( )。
A. int a[2][3] = { 0 };
B. int a[ ][3] = { {0,1}, {0} };
C. int a[2][3] = { {0,1}, {2,3}, {4,5} };
D. int a[ ][3] = { 0, 1, 2, 3, 4, 5 };

(2) 用 const 声明的变量()。
A. 不能被读取
B. 在声明时可定义也可不定义
C. 只能被读取
D. 其值在程序中可以被改变

(3) 有语句 int a[ ] = { 0, 2, 4, 6, 8, 10 },p = a + 1; 其值等于 0 的表达式是()。
A. * (p++)
B.
(++p)
C. (p–)
D.
(–p)

(4) 下列的描述中()是错误的。
A. 使用全局变量可以从被调用函数中获取多个操作结果
B. 局部变量可以初始化,若不初始化,则系统默认它的值为 0
C. 当函数调用完后,静态局部变量的值不会消失
D. 全局变量若不初始化,则系统默认它的值为 0

(5) C++ 语言的跳转语句中,对于 break 和 continue 说法正确的是()。
A. break 语句只能用于循环体中
B. continue 语句只能用于循环体中
C. break 是无条件跳转语句,continue 不是
D. break 和 continue 的跳转范围不够明确,容易产生问题

(6) S 是字符数组,用于存储字符串,下面不能够判断字符串 S 是空串的是()。
A. if (S[0] == 0 )
B. if (strlen(S) == 0)
C. if (strcmp(S, “”) == 0)
D. if (S == ‘\0’)

(7) C++ 函数的参数传递方式有()。
A. 地址传递
B. 引用传递
C. 双向值传递
D. 由用户指定传递方式

(8) 下面判断是否构成重载函数的条件中,错误的判断条件是()。
A. 参数类型不同
B. 参数个数不同
C. 参数顺序不同
D. 函数返回值不同

(9) 设 a 和 b 是两个结构体变量,下面正确的表达式是()。
A. a = b
B. a = b + 1
C. a > b
D. a == b

(10) 派生类对象只能访问基类中的()。
A. 公有继承的公有的成员
B. 公有继承的私有成员
C. 公有继承的保护成员
D. 私有继承的公有成员

(11) 关于构造函数的叙述中,错误的说法是()。
A. 构造函数的名称必须为类名
B. 构造函数最多只能有一个
C. 创建对象时自动执行构造函数
D. 构造函数无任何函数类型

(12) ()只能访问静态成员变量。
A. 静态成员函数
B. 虚函数
C. 构造函数
D. 析构函数

(13) C++ 中类有两种用法,一种是类的实例化,即生成类对象;另一种是通过()派生出新的类。
A. 复用
B. 继承
C. 重载
D. 封装

(14) 下面描述中,正确的是()。
A. 虚函数是没有实现的函数
B. 纯虚函数的实现在派生类定义
C. 抽象类是具有纯虚函数的类
D. 抽象类指针可以指向不同的派生类

(15) 一个类的友函数能够访问该类的()。
A. 私有成员
B. 保护成员
C. 公有成员
D. 所有成员

(16) 下列关于构造函数说法不正确的是()。
A. 构造函数必须与类同名
B. 构造函数可以省略不写
C. 构造函数必须有返回值
D. 在构造函数中可以对类中的成员进行初始化

(17) 关于 new 运算符的下列描述中,()是错误的。
A. 它可以用来动态创建对象和对象数组
B. 使用它创建对象或对象数组,可以使用 delete 删除
C. 使用它创建对象时要调用构造函数
D. 使用它调用对象数组时不许指定初始值

(18) 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。
A. 基类、自己所属类、成员对象成员所属类
B. 对象成员所属类、基类、自己所属类
C. 自己所属类、对象成员所属类、基类
D. 基类、对象成员所属类、自己所属类

(19) 下列说法正确的是()。
A. 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C. 类的内联函数必须在类体内定义
D. 类的内联函数必须在类体外通过关键字 inline 定义

(20) 执行语句:

int a = 10, b;
int &pa = a, &pb = b

后,下列正确的语句是()。
A. &pb = a
B. pb = pa
C. &pb = &pa
D. pb = pa

二、判断题(每题 1 分,共10×1 =10分)

(1) 函数的形参时局部变量。

(2) 有语句 #define n 10 ,则 int a[n] ; 定义数组是合法的。

(3) 赋值运算符只能作为成员函数进行重载。

(4) 条件编译的作用是根据不同条件进行编译不同程序段,以提高程序的兼容性。

(5) 静态数据成员必须在类外定义和初始化。

(6) 可以对类成员变量直接赋值。

(7) 在 class 定义一个类时,数据成员函数的默认访问权限是私有的。

(8) 抽象类通常应用派生类。

(9) 指针可以做任何类型的强制转换。

(10) 对象不能作为数组元素。

三、编程题

1、编写程序,输入 100 个数值,从小到大排序后输出。(10分)

2、输入一行字符,按输入字符的反序建立一个单向链表存储这些字符,并输出该链表中的字符。(10分)
节点的结构:

struct node{
    char ch;
    node *next;
};

3、设计三角形类 CTriangle ,写出下面 6 个成员函数。三角形类的部分定义如下:(30分)

class CTriangle{
    float a, b, c;  //三角形的三条边长
    float area;  //保存三角形的面积
    public:
        // (1)默认构造函数
        // (2)有初始值的构造函数
        // (3)拷贝函数
        // (4)设置三角形的三条边长度
        // (5)得到三角形的三条边长度
        // (6)"+" 运算符重载,实现 2 个三角形的面积之和
};

Original: https://www.cnblogs.com/gshang/p/15676775.html
Author: GShang
Title: 面向对象C++编程与实践考试题目

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536405/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 聊聊 C++ 中的几种智能指针 (下)

    一:背景 上一篇我们聊到了C++ 的 auto_ptr ,有朋友说已经在 C++ 17 中被弃用了,感谢朋友提醒,今天我们来聊一下 C++ 11 中引入的几个智能指针。 uniqu…

    C++ 2023年5月29日
    055
  • maya2018 + VS2017 C++编译环境搭建

    下载: https://www.autodesk.com/developer-network/platform-technologies/maya 解压,将devkitBase下的…

    C++ 2023年5月29日
    060
  • C++设计模式-工厂方法

    定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法(Factory Method )使一个类的实例化延迟到其子类。也叫虚构造器(Virtual Construct…

    C++ 2023年5月29日
    038
  • 聊聊 C++ 和 C# 中的 lambda 玩法

    这几天在看 C++ 的 lambda 表达式,挺有意思,这个标准是在 C11标准 加进去的,也就是 2011 年,相比 C# 2007 …

    C++ 2023年5月29日
    053
  • C++11 并发指南六( <atomic> 类型详解二 std::atomic )

    C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::at…

    C++ 2023年5月29日
    0109
  • C++接口设计和代码重构

    讲了接口设计, 文档(doxygen),测试等方面。对于从头编写基础库, 或者没有基础库开发经验并且需要短期内上手, 有一定实际参考价值。 所谓Mikado Method方法是用来…

    C++ 2023年5月29日
    052
  • C++深拷贝与浅拷贝

    对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝…

    C++ 2023年5月29日
    035
  • CLion之C++框架篇-优化开源框架,引入curl,实现get方式获取资源(四)

    bash;collapse:true;;gutter:true; cmake_minimum_required(VERSION 3.11.2)</p> <p&gt…

    C++ 2023年5月29日
    059
  • 【C++自绘控件】如何用GDI+来显示图片

    在我们制作一个应用软件的时候往往需要在窗口或控件中添加背景图。而图片不仅有BMP格式的,还有JPEG、PNG、TIFF、GIF等其它的格式。那么如何用jpg格式的图片来当背景呢? …

    C++ 2023年5月29日
    060
  • 【C++】第1章 在VS2015中用C++编写控制台应用程序

    分类:C++、VS2015 创建日期:2016-06-12 看到不少人至今还在用VC 6.0开发工具学习C++,其实VC 6.0开发工具早就被淘汰了。这里仅介绍学习C++时推荐使用…

    C++ 2023年5月29日
    067
  • Microsoft Visual C++ 2019 v14.28.29617

    Microsoft Visual C++ Redistributable(系统运行库,简称MSVC,VB/VC)是Windows操作系统应用程序的基础类型库组件。 Microsof…

    C++ 2023年5月29日
    090
  • C++ #ifndef、#define、#endif作用

    在C++项目中,#ifndef、#define、#endif非常常见,接下来就来简单说一下它们的作用。 作用:防止头文件被重复引用,防止被重复编译。 简介: ifndef 它是if…

    C++ 2023年5月29日
    071
  • C++ 知识点

    知识点 说明 所谓的引用就是给变量取一个别名,使一块内存空间可以通过几个变量名来访问。声明引用类型的变量需要在变量名前加上符号&,并且必须指定初值,即被引用的变量。 C++…

    C++ 2023年5月29日
    049
  • 哈希表查找(散列表查找) c++实现HashMap

    算法思想: 哈希表 什么是哈希表 在前面讨论的各种结构(线性表、树等)中,记录在结构中的相对位置是随机的,和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和…

    C++ 2023年5月29日
    070
  • c++ 头文件相互包含导致编译问题

    根本原因是用到某个符号的时候符号还没声明,找不到符号导致编译报错 方法是make .. verbose=1,展示所有预处理,编译等详细过程 然后使用 gcc -E ,查看文件包含展…

    C++ 2023年5月29日
    041
  • UML——从类图到C++

    简易软件开发流程 实践中,use case and description、class diagram与sequence diagram三者搭配,几乎是UML项目的基本类型,所以在…

    C++ 2023年5月29日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球