找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1238|回复: 0

21秋西电面向对象程序设计C++模拟试卷答案

[复制链接]
发表于 2021-8-9 12:12:37 | 显示全部楼层 |阅读模式
考试时间:90分钟
一.简答题(10分,每题2分)
1.1(3分) 运算符new和delete的功能分别是什么?
答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。

1.2(3分)分别给出至少三种C++的基本数据类型、组合数据类型。
答案:基本数据类型:整型、浮点型、字符型、布尔型、空值型(给出3种即可)
      组合数据类型:指针类型、引用类型、数组类型、枚举类型、结构类型(给出3种即可)。

1.3(4分)什么是内联函数?为什么要引进内联函数?
答案:用inline关键字说明的函数被称为内联函数。
   引入内联函数的目的是提高调用频繁、但代码又不大的函数的工作效率。

二.填空题(20分,每空2分)
2.1  C++中的重载函数至少要在           、         或        上有所不同。
答案:参数个数;参数类型;参数顺序

2.2 在C++中,类A的每一个非静态成员函数都有一个隐藏的指针类型的形参        ,它指向当前正在操作的对象,其类型为            。
答案:this,A* const

2.3 对于双目运算符,以成员函数方式重载时,有      个参数;以友元函数方式重载时,有      个参数。
答案:1,2

2.4派生类对基类的继承有三种方式:             、             和             。
答案:私有继承、公有继承、保护继承(答案顺序可以打乱)

三.单项选择题(20分,每题2分)
3.1 在“int a = 10, *p = &a;”语句中,p的值是           。
A. 10                             B. 变量p的地址    C. 变量a的地址     D. 随机数
答案:C

3.2 在一个被调用函数中,关于return语句使用的描述,             是错误的。
A.被调用函数中可以不使用return语句
B. 被调用函数中可以使用多个return语句
C. 被调用函数中如果有返回值,就一定要有return语句
D. 被调用函数中,一个return语句可返回多个值给调用函数
答案:D

3.3下列程序段中,不是死循环的是           。
A. int j = 100;                                                        B. for(;;)
       while (1) {
         j = j % 100 + 1;
         if (j > 1000) break;
}
C. int n = 0;                                                        D. int m = 36;
       do { ++n;                                                           while( m )  --m;
       } while( n >= 0)
答案:D

3.4 关于虚函数的描述中,正确的是              。
    A. 虚函数是一个静态成员函数
B. 虚函数是一个非成员函数
C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义
D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
答案:D

3.5下列常量中,        不是C++语言的整型常量。
A. 01                                B. 0x11                                C. 081                                D. -32768
答案:C

3.6 下列关于运算符重载的描述中,正确的是                  。
A. 运算符重载不可以改变运算符的语法结构
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载可以改变操作数的个数
答案:A

3.7 下列关于派生类析构函数的叙述中,错误的是         。
A. 派生类析构函数的调用顺序与构造函数调用顺序相反
B. 派生类析构函数是不能从基类继承
C. 派生类析构函数的处理顺序为:派生类新增的普通成员,派生类新增的对象成员,所有从基类继承的成员
D. 派生类析构函数的处理顺序为:所有从基类继承的成员,派生类新增的普通成员,派生类新增的对象成员
答案:D

3.8 下列关于C++中类的叙述,其中错误的是      。
        A. 类的构造函数在定义对象时自动执行
B. 析构函数不能够重载
C. 只有类的成员函数才能访问类中的私有成员
D. 在类中,成员缺省的访问权限是private
答案:C

3.9下面的函数中,静态成员函数不能访问的是        。
A. 静态数据成员                                                        B. 静态成员函数
C. 类以外的函数和数据                                        D. 非静态数据成员
答案:D

3.10 假设A是一个类,那么执行语句“A a, b(3), *p;”,调用了        次构造函数。
A. 2                                B. 3                                C. 4                                D. 5
答案:A

四.读程题(20分,每题5分)
4.1 给出下述源程序的运行结果。
#include <iostream.h>
void main( ) {
   int x[] = {5, 4, 3, 2, 1};
   int *p = &x[1];
   int a = 10, b;
   for(int i = 3; i >= 0; i--)
       b = (*(p+i) < a) ? *(p+i) : a;
   cout << b << endl;
}
答案:        4

4.2 给出下述源程序的运行结果。
#include <iostream.h>
void fun(int, int&);
void main( ) {
  int a, b;
  fun(5, a);
  fun(8, b);
  cout << "a + b = " << a + b << endl;
}
void fun(int i, int& j)
{    j = i * 3;  }
答案:        a + b = 39

4.3给出下述源程序的运行结果。
#include<iostream.h>
void main( )
{         double d = 2.2, e = 3.3;
        double &rd = d, &re = e;
        cout << rd+re << ", " << d+re << endl;
        rd = 4.4;
        cout << rd+re <<", " << d+re << endl;
}
答案:        5.5,  5.5
                7.7,  7.7

4.4 给出下述源程序的运行结果。
#include <iostream.h>
class A {
  public:
A() { a1 = a2 = 0; cout << "Default constructor called.\n"; }
A(int i, int j) {  a1 = i; a2 = j; cout << "Constructor called.\n"; }
void print() { cout << "a1 = " << a1 <<" , " << "a2 = " << a2 << endl; }
  private:
    int a1, a2;
};
void main() {
   A x, y(3,9);
   x.print();
   y.print();
}
答案:Default constructor called.
Constructor called.
a1 = 0, a2 = 0
a1 = 3, a2 = 9

五.编程题(30分,每题15分)
5.1 定义两个重载函数,分别能求矩形和圆的周长,然后在main函数中对这两个函数进行调用并测试其功能。求矩形的周长时需要输入矩形的长和宽;求圆的周长时需要输入圆的半径。
参考程序:
#include <iostream.h>
const double PI = 3.14;
double length(double r) { return 2 * r * 3.14; }
double length(double l, double w) { return 2*l + 2&w; }
void main() {
   double r, l, w;
   cout << "请输入圆的半径:";
   cin >> r;
   cout << "请输入矩形的长和宽:";
   cin >> l >> w;
   cout << "圆的周长为:" << length(r) << endl;
   cout << "矩形的周长为:" << length(l, w) << endl;
}

5.2 设计一个整型数组类,要求实现以下功能:
(1)创建指定大小的数组;
(2)判断数组中的元素个数是否已达到数组的最大元素数;
(3)判断数组中是否有元素;
(4)输出数组中的各个元素;
参考程序:
#include <iostream>
using namespace std;

const int MAX_LEN = 100;         // 默认的数组最大容量
const int NO = -1;

class MyArray {
private:
    int *a;                      // 数组元素
    int iMaxSize;                // 数组最大容量
    int iCurrentSize;            // 数组中当前元素数
public:
    MyArray(int size = MAX_LEN); // 创建大小为size的数组
                                 // 若不给出实参,则按照默认大小创建数组     
    bool full();                 // 判断数组是否达到最大元素数
    bool empty();                // 判断数组中是否有元素
    void printArray();           // 输出数组中的所有元素
};

MyArray :: MyArray(int size) {
    a = new int[size];
    iMaxSize = size;
    iCurrentSize = 0;
}

bool MyArray :: full() {
     if(iCurrentSize == iMaxSize)  return true;   // 数组已满
     else return false;                           // 数组未满
}

bool MyArray :: empty() {
     if(iCurrentSize == 0) return true;           // 数组为空
     else return false;                           // 数组不为空
}

void MyArray :: printArray() {
     for(int i = 0; i < iCurrentSize; i++) {
        cout << "a[" << i << "] = " << a[i] << '\t';
        if(i % 5 == 0)  cout << endl;
     }
}


QQ|手机版|小黑屋|网站地图|无忧答案网 ( 冀ICP备18010495号-1 )

GMT+8, 2024-5-3 16:16

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表