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


    又到了期末周,突击一下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
    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<

    有语法错误的语句是 【 正确答案: 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

    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;

    }

  • 相关阅读:
    2.GET和POST的区别
    NYOJ 106 背包问题 贪心算法
    3BHE003855R0001 UNS2882A 用于嵌入式/工业用途的人工智能盒
    记一次edu实战
    spring5.0源码解析 之 ConfigurationClassPostProcessor
    MacOS M1芯片CentOS8部署搭建k8s集群
    无蓝光的护眼灯有哪些品牌?分享五款优秀的无蓝光护眼台灯
    Java如何实现统计在线人数的功能?
    【华为OD机试真题 JS】找城市
    【C++】C++11 ——— 类的新功能
  • 原文地址:https://blog.csdn.net/yf743909/article/details/137680083