C++第二学期期末考试选择题题库(qlu题库,自用)

news2024/10/7 9:29:29

又到了期末周,突击一下c++吧@—@

第一次实验 

1、已知学生记录的定义为:
struct student
{
 int no;
 char name[20];
 char sex;
 struct  注意年月日都是结构体,不是student里面的                                
 {
  int year;
  int month;
  int day;
 }birth;
};
struct student s;
假设变量s中的"生日"应是"1988年5月10日",对"生日"的正确赋值语句是 【 正确答案: d】      
(A) year=1988; month=5; day=10;
(B) brith.year=1988; birth.month=5; birth.day=10;
(C) s.year=1988; s.month=5; s.day=10;
(D) s.birth.year=1988; s.birth.month=5; s.birth.day=10; 

2、直接打

已知:
union u_type
{
 int i;
 char ch;
}temp;
执行语句"temp.i=305;"后,temp.ch的值为   【 正确答案: D    

(A)  266  (B)  256  (C)  10  (D)  1

3、设有以下说明语句: 【 正确答案: c
struct strutype
{
 int a;
 float b;
}var;
则下面叙述中错误的是      
(A)  struct是结构类型的关键字
(B)  struct strutype是用户定义的结构类型
(C)  var是用户定义的结构类型名
(D)  a和b都是结构成员名 

(A) struct 是结构类型的关键字 - 正确。在 C 语言中,struct 确实是用来定义结构体类型的关键字。

(B) struct strutype 是用户定义的结构类型 - 正确。这里 struct strutype 定义了一个名为 strutype 的结构体类型。

(C) var 是用户定义的结构类型名 - 错误。var 并不是结构类型名,而是该结构体类型的一个变量名。struct strutype 是结构类型名,而 var 是这个类型的一个实例或对象。

(D) a 和 b 都是结构成员名 - 正确。在结构体 struct strutype 中,a 是一个整型成员,b 是一个浮点型成员。

因此,错误的叙述是 (C)。

4、以下对结构类型变量std1的定义中错误的是  【 正确答案: d     
(A)#define STUDENT struct student
   STUDENT
     {  int num;
        float age;
     } std1;
(B)struct student
     {  int num;
        float age;
     };
   struct student std1;
(C)struct
    {  int num;
       float age;
    } std1;
(D)struct
    {  int num;
       float age;
    } student;
struct student std1;

 这个选项首先定义了一个匿名结构体,并定义了一个名为 student 的变量(注意这里 student 是一个变量名,而不是类型名)。然而,在下一行中,它尝试使用 struct student 来定义 std1,但此时 student 并没有作为一个类型名被定义。因此,struct student std1; 这行代码是错误的,因为编译器不知道 student 是一个结构体类型。

5、

假设sizeof(int)为4,sizeof(char)为1,sizeof(double)为8,已知:
  union
     {
 int i;
 char c;
 double d;
     }test;
则sizeof(test)为  【 正确答案: b    

(A)13;
(B)8;
(C)16;
(D)4;

6、

若有以下说明和语句:
struct student
{
    int age;
    int num;;
}std, *p;
p = &std;
则以下对结构变量 std 中成员 age 的引用方式不正确的是 【 正确答案: d        

(A)   std.age
(B)  p->age
(C)  (*p).age
(D)  *p.age

(A) std.age - 这是正确的。直接通过结构体变量名加.和成员名来访问成员。

(B) p->age - 这是正确的。p是一个指向student结构体的指针,所以可以使用->运算符来访问成员。

(C) (*p).age - 这也是正确的。*p解引用指针p,得到结构体变量std,然后再通过.和成员名来访问成员。

(D) *p.age - 这是不正确的。这里的.运算符优先级高于*运算符,所以p.age首先会被尝试解析,但p是一个指针,不是一个结构体,所以不能使用.来访问成员。正确的做法是先解引用指针,即(*p).age

7、

若有以下说明和语句,则下面表达式中值为1002的是 【 正确答案: d】          
struct student
{
    int age;
    int num;
};
struct student stu[3] = {{1001, 20}, {1002, 19}, {1003, 21}};
struct student *p;
p = stu;

(A)  (p++)->num
(B)  (p++)->age
(C)  (*p).num
(D)  (*++p).age

第二次实验 

1、

2、

第三次实验 

1、为了区分一元运算符的前缀和后缀运算,在后缀运算符进行重载时,额外添加一个参数,其类型是 【 正确答案: c
A void
B char
C int
D float

2、下面关于运算符重载的说法中,错误的是 【 正确答案: a
A 可以对C++所有运算符进行重载
B 运算符重载保持固有的结合性和优先级顺序
C 运算符重载不能改变操作数的个数
D 在运算符函数中,不能使用缺省的参数值

第四次实验 

1、C++流中重载了运算符<<,它是一个 【 正确答案: d】。

(a)用于输出操作的成员函数    (b)用于输入操作的非成员函数

(c)用于输入操作的成员函数    (d)用于输出操作的非成员函数

 第五次实验

1、

有如下类定义:

class base{
public:int x;
protected: int y;
private: int z;
};

派生类采用什么方式继承可以使x成为自己的公有成员 【 正确答案: a】 。

(a)公有继承      (b)保护继承    (c)私有继承    (d)以上三个都对

2、

在公有派生的情况下,有关派生类对象和基类对象的关系的关系,不正确的叙述是 【 正确答案: C
A 派生类的对象可以赋给基类对象
B 派生类的对象可以初始化基类的引用
C 派生类的对象可以直接访问基类中的成员
D 派生类的对象的地址可以赋给指向基类的指针

第六次实验 

1、

私有继承的情况下,允许派生类直接访问的基类成员包括 【 正确答案: B
A 公有成员和私有成员
B 公有成员和保护成员
C 保护成员和私有成员
D 公有成员、私有成员和保护成员 

2、

派生类的对象对其基类成员中 【 正确答案: A】是可以访问的
公有继承中的公有成员
B 公有继承中的保护成员
C 私有继承中的公有成员
D 以上三者都对

3、

下列虚基类的声明正确的是 【 正确答案: A
A class derived:virtual public base
B virtual class derived:public base
C class virtual derived:base
D class derived: base1 virtual

4、在公有派生的情况下,有关派生类对象和基类对象的关系的关系,不正确的叙述是 【 正确答案: C
A 派生类的对象可以赋给基类对象
B 派生类的对象可以初始化基类的引用
C 派生类的对象可以直接访问基类中的成员
D 派生类的对象的地址可以赋给指向基类的指针

5、直接打,看报错位置

#include<iostream>
using namespace std;
class base
{
       int n;
public:
       base(int a,int b,int c)
       {
              n=a;x=b;y=c;
       }
protected:
       int x,y;
 
};
class derived:public base
{    
public:
       int m;
       derived(int a,int b,int c,int d):base(a,b,c){m=d;}
};
int main()
{
       derived s(1,2,3,4);//①
       cout<<s.n<<endl;//②
       cout<<s.x<<s.y<<endl;//③
       cout<<s.m<<endl;//④
}

有语法错误的语句是 【 正确答案: B】 。

(a)①②      (b)②③      (c)③④      (d)①④

 6、

class base{
       int x;
public:
       base(int n){ x=n;}
};

class derived: public base{
       int y;
public:
       derived(int a,int b);
};

下列对构造函数derived的定义,正确的是 【 正确答案: A】。

(A) derived::derived(int a,int b):base(a),y(b){}

这个选项是正确的。它首先调用了基类 base 的构造函数,传递了参数 a,然后初始化了 derived 类的成员 y,传递了参数 b

(B) derived::derived(int a,int b):x(a),y(b){}

(C) derived::derived(int a,int b):base(a),derived(b){}

(D) derived::derived(int a,int b):x(a),derived(b){}

7、

class base{
       int i;
public:
       void set(int n){ i=n;}
       int get( )const{ return i; }
};
class derived: protected base{
protected:
       int j;
public:
       void set(int m, int n){ base::set(m); j=n;}
       int get( )const{ return base::get( )+j; }
};

则类derived中保护的数据成员和成员函数的个数是 【 正确答案: C】。

(A)1        (B)2        (C)3        (D)4

第七次实验

1、假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(  【 正确答案: D )

(A)  x.a

(B)  x.a()

(C)  x->GetValue()

(D)   x.GetValue( )

 2、

下列关于虚基类的描述中,错误的是(  【 正确答案: C )

(A)  使用虚基类可以消除由多继承产生的二义性

(B)  构造派生类对象时,虚基类的构造函数只被调用一次

(C)  声明 class B:virtual public A 说明类B为虚基类

A作为B的基类时是以虚基类的方式被继承

(D)   建立派生类对象时,首先调用虚基类的构造函数

3、

下列运算符中,不能重载的是 (  【 正确答案: C )

(A)  &&

(B)  !=

(C)  .  

(D)  ->

 4、

下列关于类和对象的叙述中,错误的是(  【 正确答案: A )

(A)  一个类只能有一个对象

(B)  对象是类的具体实例

(C)  类是对某一类对象的抽象

(D)  类和对象的关系是一种数据类型与变量的关系

5、

下列关于类定义的说法中,正确的是(  【 正确答案: A )

(A)  类定义中包括数据成员和函数成员的声明

(B)  类成员的缺省访问权限是protected

(C)  数据成员必须被声明为私有的

(D)  成员函数只能在类体外进行定义

6、

析构函数可以返回(  【 正确答案: D )

(A)  指向某个类的指针

(B)  某个类的对象

(C)  状态信息表明对象是否被正确地析构

(D)  不可返回任何值

7、

设A为自定义类,现有普通函数int fun(A& x)。则在该函数被调用时(  【 正确答案: C )

(A)  将执行复制构造函数来初始化形参x

(B)  仅在实参为常量时,才会执行复制构造函数以初始化形参x

(C)  无需初始化形参x

(D)  仅在该函数为A类的友元函数时,无需初始化形参x

8、

在下面类声明中,关于生成对象不正确的是(  【 正确答案: C )

class point

{ public:

int x;

int y;

point(int a,int b) {x=a;y=b;}

};

(A)  point p(10,2);

(B)  point *p=new point(1,2);

(C)  point *p=new point[2];

(D)  point *p[2]={new point(1,2), new point(3,4)};

C不对是因为缺少无参构造函数,这一点初学者在实际操作的时候也是常犯的错误

9、

下列函数中,(  【 正确答案: C )不能重载。    

(A)  成员函数

(B)  非成员函数

(C)  析构函数

(D)  构造函数

10、

在C++中不能重载的运算符是(  【 正确答案: A)    

(A)  ? :

(B)   +

(C)   -

(D) <=

 11、

下列运算符中,(  【 正确答案: C)运算符不能重载      

(A)  &&

(B)   [ ]

(C)   ::

(D) <<

12、

有如下类定义:class Foo

{

public:

          Foo(int v):value(V){  }     //①

          ~Foo(){}                            //②

private:

          Foo(){}                               //③

          int value=0;                      //④

};

其中存在语法错误的行是: 【 正确答案: D          

(A)  ①

(B)  ②

(C)  ③

(D) ④

13、

下列情况中,不会调用拷贝构造函数的是 【 正确答案: B         
(A)  用一个对象去初始化同一类的另一个新对象时

(B)  将类的一个对象赋值给该类的另一个对象时

(C)  函数的形参是类的对象,调用函数进行形参和实参结合时

(D) 函数的返回值是类的对象,函数执行返回调用时

14、

下面关于new和delete操作符的说法,哪个是不正确的: 【 正确答案: C         
(A)  使用new操作符,可以动态分配全局堆中的内存资源。

(B)  用new申请的数组,必须用delete[] 释放。

(C)  用new申请的空间,即使不调用delete 释放掉,当程序结束时也会自动释放掉。

(D) 执行语句A * p=new A[100] 时, 类A的构造函数会被调用100次。

15、

已知f1和f2是同一类中的两个成员函数,若f1的实现代码体内不能调用f2, 则可能的情况是 【 正确答案: B         
(A)  fl和f2都是静态函数

(B)  fl是静态的,f2不是 

(C)  f1不是静态的,f2是静态的

(D)  fl和f2都不是静态函数

静态成员函数: 

  1. 静态成员函数属于类本身,而不属于类的任何特定对象。
  2. 它们可以直接通过类名来调用,而不需要创建类的对象。
  3. 它们不能访问类的非静态成员(包括非静态成员函数和非静态数据成员),因为它们不关联于类的任何特定对象。

第八次实验

1、

在C++中,用于实现运行时多态性的是 【 正确答案: d
A 内联函数
B 重载函数
C 模板函数
D 虚函数

2、

一个对象所占的内存空间中可以保存下面哪类数据? 【 正确答案: D         
(A)  静态数据成员

(B)  内置函数代码

(C)  所有成员函数的入口地址

(D) 虚函数表的入口地址

 3、

下列哪种函数可以是虚函数: 【 正确答案: D         
(A)  自定义的构造函数

(B)  拷贝构造函数

(C)  静态成员函数

(D) 析构函数

4、

模板对类型的参数化提供了很好的支持,因此 【 正确答案: b

A.类模板的主要作用是生成抽象类

B.类模板实例化时,编辑器将根据给出的模板实参生成一个类

C.在 类模板中的数据成员都具有同样类型

D. 模板中的成员函数都没有返回值

5、

如果一个类至少有一个纯虚函数,那么就称该类为 【 正确答案: a
A 抽象类
B 派生类
C 虚基类
D 以上都不对

6、

下列关于抽象类的说明中不正确的是 【 正确答案: c
A 含有纯虚函数的类称为抽象类
B 抽象类不能被实例化,但可声明抽象类的指针变量
C 抽象类的派生类可以实例化
D 纯虚函数可以被继承

7】

    请将下列程序补充完整,使得输出结果为:

Destructor Derived

Destructor Base

  

#include <iostream>

using namespace std;

class Base

{

  public:

              virtual ~Base()      【 正确答案: virtual ~Base ()】    { cout << "Destructor Base"<< endl; }

};

class Derived : public Base

{

  public:

                       【 正确答案: ~Derived () 或 virtual ~Derived ()】   { cout << "Destructor Derived" << endl; }

};

int main ()

{

    Base *pBase = new Derived;

        delete pBase;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析BI仪表盘搭建

BI仪表盘搭建六个原则&#xff1a; 1.仪表盘搭建符合业务的阅读&#xff0c;思考和操作逻辑。 2.明确仪表盘主题&#xff0c;你的用户对什么感兴趣。 普通业务人员&#xff1a;销售&#xff1a;注册&#xff0c;激活&#xff0c;成交投放&#xff1a;消耗&#xff0c;转化率…

构建下一代数据解决方案:SingleStore、MinIO 和现代 Datalake 堆栈

SingleStore 是专为数据密集型工作负载而设计的云原生数据库。它是一个分布式关系 SQL 数据库管理系统&#xff0c;支持 ANSI SQL&#xff0c;并因其在数据引入、事务处理和查询处理方面的速度而受到认可。SingleStore 可以存储关系、JSON、图形和时间序列数据&#xff0c;以满…

Java面试八股之简述JVM内存结构

简述JVM内存结构 Java虚拟机&#xff08;JVM&#xff09;内存结构主要分为线程私有区域和线程共享区域两大部分&#xff0c;具体组成部分如下&#xff1a; 线程私有区域 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 记录当前线程执行的字节码行…

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》 《文稿拾零》超厚的一本书&#xff08;570&#xff09;&#xff0c;看得时间比较长&#xff0c;这本书是作者零散时间写的一些关于文学性质的笔记&#xff0c;读起来还是比较无趣的&#xff0c;非常零散&#xff0c;虽然有…

CP AUTOSAR标准之FlashTest(AUTOSAR_CP_SWS_FlashTest)(更新中……)

1 简介和功能概述 该规范指定了AUTOSAR基础软件模块Flash测试驱动程序的功能、API和配置。   此闪存测试模块提供测试恒定内存的算法。恒定内存可以是数据/程序闪存、程序SRAM、锁定缓存,可以嵌入微控制器中,也可以通过内存映射连接到微控制器。为简化起见,SW模块称为闪存…

秋招突击——第六弹——Java的SSN框架快速入门——MyBatisPlus

文章目录 引言正文入门案例整和MybatisPlus的相关内容 概述标准数据层开发分页查询DQL编程控制条件查询——NULL值处理 查询投影查询条件设定等于操作范围查询模糊查询分组查询 字段映射和表名映射 DML编程控制——增删改查相关操作添加操作id生成策略控制 删除操作多数据删除逻…

面试:关于word2vec的相关知识点Hierarchical Softmax和NegativeSampling

1、为什么需要Hierarchical Softmax和Negative Sampling 从输入层到隐含层需要一个维度为NK的权重矩阵&#xff0c;从隐含层到输出层又需要一个维度为KN的权重矩阵&#xff0c;学习权重可以用反向传播算法实现&#xff0c;每次迭代时将权重沿梯度更优的方向进行一小步更新。但…

Qt画实时曲线图

Qt引入QcustomPlot 首先下载QcustomPlot源代码&#xff0c;https://github.com/qcustomplot/qcustomplot 下载zip文件 运行所下载的项目生成库文件libqcustomplotd2.a文件和qcustomplotd2.dll文件。 在项目中添加printsupport。 并将qcustomplot.h文件和qcustomplot.cpp文…

RMDA通信1:通信过程和优势,以太网socket为何用户空间拷贝到内核空间

视频分享&#xff1a; 1.1 RDMA基本原理和优势&#xff0c;以太网socket通信为什么要用户空间拷贝到内核空间_哔哩哔哩_bilibili 一、以太网socket通信 1.1 以太网socket通信过程 1、发送端发起一次通信操作&#xff0c;数据由用户空间拷贝到内核空间。拷贝由CPU完成&#x…

ubuntu22.04笔记: 更换为阿里源

没有按照LTS 版本 会遇到下面问题&#xff1a; 参考&#xff1a;https://zhuanlan.zhihu.com/p/691625646 Ubuntu 22.04代号为&#xff1a;jammy Ubuntu 20.04代号为&#xff1a;focal Ubuntu 19.04代号为&#xff1a;disco Ubuntu 18.04代号为&#xff1a;bionic Ubuntu …

【算法专题--链表】两两交换链表中的节点 -- 高频面试题(图文详解,小白一看就懂!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 采用哨兵位头节点 &#x1f95d; 什么是哨兵位头节点&#xff1f; &#x1f34d; 解题思路 &#x1f34d; 案例图解 四、总结与提炼 五、共勉 一、前言 两两交换链表中的节点 这道题&#xff0c;可以说…

libssh-cve_2018_10933-vulfocus

1.原理 ibssh是一个用于访问SSH服务的C语言开发包&#xff0c;它能够执行远程命令、文件传输&#xff0c;同时为远程的程序提供安全的传输通道。server-side state machine是其中的一个服务器端状态机。 在libssh的服务器端状态机中发现了一个逻辑漏洞。攻击者可以MSG_USERA…

从零开始搭建一个酷炫的个人博客

效果图 一、搭建网站 git和hexo准备 注册GitHub本地安装Git绑定GitHub并提交文件安装npm和hexo&#xff0c;并绑定github上的仓库注意&#xff1a;上述教程都是Windows系统&#xff0c;Mac系统会更简单&#xff01; 域名准备 购买域名&#xff0c;买的是腾讯云域名&#xf…

重庆交通大学24计算机考研数据速览,专硕第二年招生,复试线321分!

重庆交通大学&#xff08;Chongqing Jiaotong University&#xff0c;CQJTU&#xff09;&#xff0c;是由重庆市人民政府和中华人民共和国交通运输部共建的一所交通特色、以工为主的多科性大学&#xff0c;入选“中西部高校基础能力建设工程”、“卓越工程师教育培养计划”、国…

Chromium 调试指南2024 - 远程开发(下)

1. 引言 在《Chromium 调试指南2024 - 远程开发&#xff08;上&#xff09;》中&#xff0c;我们探讨了远程开发的基本概念、优势以及如何选择合适的远程开发模式。掌握了这些基础知识后&#xff0c;接下来我们将深入了解如何在远程环境中高效地进行Chromium项目的调试工作。 …

Visual Studio开发环境搭建

原文&#xff1a;https://blog.c12th.cn/archives/25.html Visual Studio开发环境搭建 测试&#xff1a;笔记本原装操作系统&#xff1a;Windows 10 家庭中文版 资源分享链接&#xff1a;提取码&#xff1a;qbt2 注意事项&#xff1a;注意查看本地硬盘是否够用&#xff0c;建议…

C语言中的字符输入/输出和验证输入

在C语言中&#xff0c;字符输入/输出功能允许程序与用户进行交互&#xff0c;读取用户的输入信息并展示输出结果。同时&#xff0c;验证输入的作用在于确保用户输入的数据符合预期&#xff0c;以提高程序的稳定性和可靠性&#xff0c;防止无效输入引发的错误或异常行为&#xf…

利用ChatGPT辅助撰写课题申报书中的研究框架与内容设计全攻略指南

欢迎关注EssayBot&#xff0c;为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥沟通&#xff1a;yida985 撰写课题申报书是启动科研项目的第一个步骤&#xff0c;而研究框架与内容设计又是这一过程中的关键要素&#xff0…

浙大宁波理工学院2024年成人高等继续教育招生简章

浙大宁波理工学院&#xff0c;这所承载着深厚学术底蕴和卓越教育理念的学府&#xff0c;正热烈开启2024年成人高等继续教育的招生之门。这里&#xff0c;是知识的殿堂&#xff0c;是智慧的摇篮&#xff0c;更是您实现个人梦想、追求更高境界的起点。 ​浙大宁波理工学院始终坚…

Git代码管理的常用操作

在VS022中&#xff0c;Git的管理要先建立本地或远程仓库&#xff0c;然后commit到本地&#xff0c;最后push到远程代码库。 或者不建立本地的情况&#xff0c;直接拉取已有的远程代码。 Git是一个分布式版本控制系统&#xff0c;用于跟踪和管理文件的变化。它可以记录文件的修…