《面向对象程序设计C++》期末考试试卷

2023-10-26

《面向对象程序设计C++》期末考试试卷

 

  一、选择题(每小题3分,共48分。)

01、下列关于C++函数的叙述中,正确的是(  C  )。

  A)每个函数至少要具有一个参数   B)每个函数都必须返回一个值

  C)函数在被调用之前必须先声明   D)函数不能自己调用自己

02、下列关于类和对象的叙述中,错误的是(  A  )。

  A)一个类只能有一个对象         B)对象是类的具体实例

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

03、在C++中,用于实现运行时多态性的是(  D  )。

  A)内联函数     B)重载函数     C)模板函数     D)虚函数

04、下列关于运算符重载的叙述中,正确的是(  B  )。

  A)通过运算符重载,可以定义新的运算符      B)有的运算符只能作为成员函数重载

  C)若重载运算符+,则相应的运算符函数名是+  D)重载二元运算符时,必须声明两个形参

05、对于语句 cout<<x<<endl;错误的是描述是(  D  )。

  A)“cout”是一个输出流对象    B)“endl”的作用是输出回车换行

  C)“x”是一个变量             D)“<<”称作提取运算符

06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是(  B  )。

  class MyBASE

  { private:    int k;

    public:     void set(int n){ k=n;}

                int get( )const{ return k;}   };

  class MyDERIVED: protected MyBASE

  { protected:  int j;

    public:     void set(int m, int n){ MyBASE::set(m); j=n;}

                int get( ) const { return MyBASE::get( )+j; }   };

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

07、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是(   B)。

  A)这是运算符-的重载运算符函数  B)这个函数所重载的运算符是一个一元运算符

  C)这是一个成员函数             D)这个函数不改变类的任何数据成员的值

08、执行如下的程序段后,输出结果是(    )。

  cout.fill('*'); cout.width(6); cout.fill('#');  cout << 123 << endl;

  A)###123  B)123###  C)***123  D)123***

09、在下列函数原型中,可以作为类AA构造函数的是(  D  )。

  A)void AA(int);   B)int AA();   C)AA(int)const;   D)AA(int);

10、下面四个选项中,( A   )是用来声明虚函数的。

  A)virtual  B)public  C)include  D)using namespace

11、实现运行时的多态性要使用(  D  )。

  A)重载函数    B)构造函数    C)析构函数    D)虚函数    一、选择题(每小题3分,共48分。)

                                                            01-05 C A D B D

                                                            06-10 B B A D A

                                                            11-16 D A C B C C

12、要实现动态联编,必须通过( A   )调用虚函数。

  A)对象指针    B)成员名限定    C)对象名    D)派生类名

13、以下(   C )成员函数表示纯虚函数。

  A)virtual int vf(int);      B)void vf(int)=0;

  C)virtual void vf()=0;      D)virtual void vf(int){}

14、有如下类声明:class XA

                   { private: int x;

                     public:  XA(int n){ x=n;}  };

                 class XB: public XA

                   { private: int y;

                     public:  XB(int a,int b);  };

  在构造函数XB的下列定义中,正确的是(   B )。

  A)XB::XB(int a,int b): x(a),y(b){ }  B)XB::XB(int a,int b): XA(a),y(b){ }

  C)XB::XB(int a,int b): x(a),XB(b){ } D)XB::XB(int a,int b): XA(a),XB(b){ }

15、在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。则 operator+ 有    个参数,operator* 有    参数。(  C )

  A)2、2      B)2、1      C)1、2      D)1、1

16、应在下列程序划线处填入的正确语句是(  C  )。

  class Base  

 { public:

      void fun(){cout<<"Base::fun"<<endl;}   };

 class Derived:public Base  

  { void fun()

      {      //显示调用基类的函数fun()  

        cout<<"Derived::fun"<<endl; }        };  

  A)fun();   B)Base.fun();   C)Base::fun();   D) Base->fun();

 

二、填空题(每空2分,共20分。)

17、面向对象程序设计有四个主要特点,即抽象、封装、__继承____多态性__

18、非成员函数应声明为类的_friend___函数才能访问这个类的private成员。

19、派生类中的成员不能直接访问基类中的__private__成员。

20、在用class定义一个类时,数据成员和成员函数的默认访问权限是_private___

21、运算符重载函数可能是类的 友元__函数,也可以是类的_成员___函数,还可以是普通函数。

22、用流对象的成员函数控制输出格式时,用于设置字段宽度的流成员函数的名称是____,与之作用相同的控制符名称是____

23、含有纯虚函数的类称为__抽象类__

 

三、程序的填空、程序的执行(每题4分,共20分。)

24、以下程序是定义一个计数器类counter,对其重载运算符“+”,请填空。

class counter

{ private: int n;

  public:

    counter() {n=0;}

    counter(int i){n=i;}

    ____ //运算符重载函数

    { counter t; t.n=n+c.n; return t; }

    void disp() {cout<<"n="<<n<<endl;}

};

void main()

{ counter c1(5),c2(10),c3;

  c3=c1+c2;

  c1.disp(); c2.disp(); c3.disp(); }

25、下列程序的输出结果为2,请将程序补充完整。

class Base

{ public:

    ____ void fun()

   { cout<<1; }

};

class Derived: public Base

{ public:

    void fun( ) { cout<<2; }

};

int main( )

{ Base *p= new Derived;

  p->fun( );

  delete p;

  return 0; }

 

26、写出执行下面程序的输出结果。

void fun(int &x, int y)

{ int t=x; x=y; y=t; }

int main( )

{ int a[2] = {23, 42};

  fun(a[1],a[0]);

  std::cout<<a[0]<<","<<a[1]<<std::endl;

  return 0; }

 

27、写出执行下面程序的输出结果。

class A { public: A() { cout<<"A"; } };

class B { public: B() { cout<<"B"; } };

class C : public A

 { B b;

   public: C() { cout<<"C"; }

  };

int main( ) {  C obj; return 0; }

28、写出执行下面程序的输出结果。

class Base

  { private:

      char c;  

    public:  

      Base(char n):c(n){}  

      virtual ~Base(){cout<<C;}  

  };  

  class Der:public Base

  { private:

      char c;  

    public:  

      Der(char n):Base(n+1),c(n){}  

      ~Der(){cout<<C;}  

  };  

  int main()  

  { Der("X");  return 0; } 

 

四、编程题(12分)

29、编写一个程序计算“三角形、正方形、圆形”三种图形的面积,要求:

a)抽象出一个基类base;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。

 

 

参考答案

 

二、填空题(每空2分,共20分。)

17、继承、多态性    18、友元    19、私有

20、private或私有  21、成员、友元

22、width/setw  23、抽象类

 

三、程序的填空、程序的执行(每题4分,共20分。)

24、counter operator + (counter c)

25、virtual

26、23,23

27、ABC

28、XY

 

四、编程题(12分)

29、

#include <iostream>

using namespace std;

class base

{ public:

     virtual float area() const

     { return 0; }

};

 

class triangle: public base

{ protected:

    float bian,height;

  public:

      triangle(float a=0, float h=0) { bian=a; height=h; }

      virtual float area() const

      { return bian*height/2; }

};

 

class square: public base

{ protected:

     float bian;

  public:

     square(float a=0) { bian=a; }

     virtual float area() const

     { return bian*bian; }

};

 

class circle: public base

{ protected:

    float radius;

  public:

    circle(float r=0) { radius=r; }

    virtual float area() const

    { return 3.14*radius*radius; }

};

 

int main()

{ triangle t(3,4);  square s(5);  circle c(2);

  base *p;

  p=&t; cout<<"triangle's area:"<<p->area()<<endl;

  p=&s; cout<<"square's   area:"<<p->area()<<endl;

  p=&c; cout<<"circle's   area:"<<p->area()<<endl;

  return 0;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《面向对象程序设计C++》期末考试试卷 的相关文章

随机推荐

  • Bi的ETL中怎么做增量处理

    增量抽取 增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据 在ETL使用过程中 增量抽取较全量抽取应用更广 如何捕获变化的数据是增量抽取的关键 对捕获方法一般有两点要求 准确性 能够将业务系统中的变化数据按一定的频率准确地捕
  • ESP32 使用 Arduino 实现 OTA 更新

    在本指南中 您将学习如何使用库对 ESP32 开发板进行无线 OTA 更新 该库创建了一个网络服务器 允许您将新固件 新 sketch 上传到您的电路板 而无需在 ESP32 和您的计算机之间建立串行连接 此外 使用此库 您还可以将新文件上
  • Weex简介和环境的安装——Weex的学习之路(一)

    Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验 来构建 Android iOS 和 Web 应用 简单来说 在集成了 WeexSDK 之后 你可以使用 JavaScript 语言和前端开发经验来开发移动应用 也就是说
  • 计算机网络总结篇-我们是怎么访问百度的?

    对于计算机网络的理解 我的理解便是从生活中剥削出的知识体系 但这个不能用生活完全的去理解 毕竟编程思维跟生活区别还是很大的 但是生活中的例子能让我们先理解一个大概 比如我说一个例子 我的同学 谭某 他这个人比较的贱 有很多仇家 有一天仇家a
  • 华为交换机关闭接口命令_华为交换机常用命令及技巧

    如果这篇文章对您有帮助 请关注并点赞 感谢您的支持 如果还有其他问题 请私信给我 前几期讲解了华为交换机的一些配置 今天讲解一些简单的命令和一些技巧 主要是显示华为交换机配置的一些命令 这些命令对于网络管理很有帮助 也是华为交换机的常用命令
  • java无法找到加载主类是什么意思,在Java程序运行时遇到的“Could not find or load main class(无法找到或者加载主类)”是什么意思?...

    其中是命令行选项 以 字符开头 是包含包名称的完整类名 是任意传递到应用程序的命令行参数 1 有一个名为 executable 的JAR文件的并不使用这种语法 稍后我将在底部对其进行描述 包含包名称的完整类名通常写成你在Java源代码中 你
  • [Qt]Qt(C++开发框架)下载安装

    Qt开发环境安装教程 Qt官方下载网址
  • 王者荣耀助手动态服务器维护中,王者荣耀助手动态怎么发不了

    发布时间 2015 11 20 王者荣耀助手礼包怎么领取 助手礼包领取地址是什么 下面来看看王者荣耀助手礼包怎么领取 助手礼包领取地址一览吧 希望能对大家有所帮助 蚕豆网王者荣耀开黑群 439442380 点击加入 亲爱的召唤师 安卓版 l
  • springboot -- 微服务 - 3.Eureka注册中心

    三 Eureka注册中心 3 1 作用 在Eureka架构中 微服务角色有两类 EurekaServer 服务端 注册中心 记录服务信息 心跳监控 EurekaClient 客户端 Provider 服务提供者 例如案例中的user ser
  • docker启动出现Error response from daemon: Cannot restart container的报错

    1 发现问题 突然发现启动 重启 容器的时候报这个错 Error response from daemon Cannot restart container 容器id driver failed programming external c
  • Spark自学之路(十三)——Spark 机器学习库

    Spark 机器学习库MLlib Spark提供了一个基于海量数据的机器学习库 它提供了常用机器学习算法的分布式实现 开发者只需要有 Spark 基础并且了解机器学习算法的原理 以及方法相关参数的含义 就可以轻松的通过调用相应的 API 来
  • LeetCode力扣刷题:27.移除元素

    第一版 还没领悟到双指针的内核 void swap int a int b int temp a a b b temp int removeElement int nums int numsSize int val int len nums
  • php三层架构erp,基于ERP/MES/PCS三层架构的现代集成制造系统模型

    数据集成是实施MES的基础将生产管理层的生产运行 产品质量 原料和产品输送 动力能耗等数据进行汇总和处理 使下层生产过程的实时信息和上层企业资源管理等的各类信息都在MES层中融合 并通过信息集成形成优化控制 优化调度和优化决策等调度或指令
  • 【电路】自用人体感应灯(HC-SR501人体感应模块)

    文章目录 低成本人体感应灯 需求分析 器件清单 参数测量 HC SR501人体感应模块 LED灯板 方案设计 思路简介 原理图 PCB设计 成品 低成本人体感应灯 需求分析 老旧小区地下室没有灯 找钥匙不方便 地理环境因素使用声音传感灯易发
  • 五年后端研发,跳槽薪资30k变成45k,总结的这些面试题,你会哪些

    每年的金三银四都是各大公司招聘程序员的最佳时期 在这段时间内有好多程序员会为了面试而发愁 不知道如何才能收到好的offer 拿到理想的薪资 实现自我的人生价值 我想告诉大家的是 其实都不用愁的 好好准备一下就可以了 每个人都想找一份大厂的
  • linux服务器安装jdk,maven详细步骤

    linux服务器安装jdk maven以及nginx详细步骤 一 安装jdk 使用命令安装 二 安装maven 1 将下载好的maven包放入linux下自定义文件夹 2 配置maven环境 打开profile文件 命令如下 一 安装jdk
  • C语言是用( )符号来标注字符常量,C语言符号常量的常考点

    各位计算机考研的小伙伴们 大家好 很开心以这样的方式和大家分享计算机考研的相关知识 今天给大家带来的内容是考研 C语言程序设计 中符号常量的常见考法 符号常量是用一个标识符来表示一个常量 特点是编译后写在代码区 不可寻址 不可更改 属于指令
  • stm32HAL库 G4 SPI 从机DMA可变长度接受数据乱码问题

    使用一个引脚当作SPI CS 边沿触发 在电平位0时候接受SPI数据20个字节 如果实际主机只发了小于20字节时候 下一个帧就会错乱 去老外找了之后 需要复位SPi RCC时钟才能复位掉SPI 下面的不行 正确的做法
  • 《剑指offer》系列---1

    最近一直在看剑指offer 这上面的题目都是比较考察编程能力的 打算做个记录 把写过的代码保存下来 1 实现一个string类 面试官的考察点应该在以下几点 1 模板类的书写 2 对于赋值函数考察的几点 1 是否返回引用 因为只有返回引用
  • 《面向对象程序设计C++》期末考试试卷

    面向对象程序设计C 期末考试试卷 一 选择题 每小题3分 共48分 01 下列关于C 函数的叙述中 正确的是 C A 每个函数至少要具有一个参数 B 每个函数都必须返回一个值 C 函数在被调用之前必须先声明 D 函数不能自己调用自己 02