2020年全国计算机等级考试二级c++上机题库(2)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
2

使用VC6打开考生文件夹下的工程test21_3,此工程包含一个源程序文件test21_3.cpp,其中定义了用于表示长方形的类CRectangle,但类CRectangle的定义并不完整。请按要求完成下列操作,将类CRectangle的定义补充完整。

 (1)定义CRectangle的构造函数,函数含参数dx,dy,da和db,它们都是double型的数据,请将类数据成员x,y, a和b初始化,并输出“CRectangle Constructed.”(另起一行输出该文字)。请在注释“//**1**之后添加适当的语句。

 (2)完成类CRectangle的成员函数getperimeter()的定义,将以a和b为边的矩形周长的值返回,请在注释“//**2**”之后添加适当的语句。

 (3)完成类CRectangle的成员函数getarea()的定义,将以a和b为边的矩形面积的值返回,请在注释“//**3**”之后添加适当的语句。

 (4)完成类CRectangle的友元函数friend double dist(CRectangle& rt)的定义,先定义两个double型的临时变量tx和ty,然后将参数对象rt的数据成员x与a的一半相加,y与b的一半相加,分别赋值给tx和ty,最后求出tx与ty的平方和的值之后将它的平方根返回,将请在注释“//**4**”之后添加适当的语句。

 输出结果如下:

   CRectangle Constructed.

   Down_Left corner point is:(100,50)

   a=1200,b=700

   Perimeter of this rectangle is:3800

   Area of this rectangle is:840000

   The Distance is:806.226

   CRectangle Constructed.

   Down_Left corner point is:(200,150)

   a=2000,b=800

   Perimeter of this rectangle is:5600

   Area of this rectangle is:1.6e+006

   The Distance is:1320.04

   CRectangle Destructed.

   CRectangle Destructed.

 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

 源程序文件test21_3.cpp清单如下:

   #include<iostream.h>

   #include<math.h>

   class CRectangle

   {

   private:

    double x;

    double y;

    double a;

    double b;

   public:

    CRectangle()

    {

        cout<<"\nCRectangle Constructed."<<endl;

    }

    CRectangle(double dx, double dy, double da, double db)

    {

   //**1**

   a=da;

   b=db;

   cout<<"\nCRectangle Constructed."<<endl;

    }

    ~CRectangle ( )

    {

        cout<<"CRectangle Destructed."<<endl;

    }

    void putxy(double dx, double dy){ x=dx; y=dy;}

    void putab(double da, double db)( a=da; b=db;}

    double getx(){ return x;}

    double gety(){ return y;}

    double geta(){ return a;}

    double getb(){ return b;}

    double getperimeter()

   {

   //**2**

   }

    double getarea()

   {

   //**3**

   }

    friend double dist(CRectangle& rt);

   };

   double dist(CRectangle& rt)

   {

    //**4**

   ty=rt.y+rt.b/2.0;

    return sqrt(tx*tx+ty*ty);

   }

   void main()

   {

    CRectangle rect;

    rect.putxy(100.0, 50.0);

    rect.putab(1200.0, 700.0);

    cout<<"Down_Left corner point is: ("<<rect.getx() <<", "<<rect.gety()<<")" <<endl;

    cout<<"a= "<<rect.geta()<<", b="<<rect.getb() <<endl;

    cout<<"Perimeter of this rectangle is: "<<rect.getperimeter()<<endl;

    cout<<"Area of this rectangle is:"<<rect.getarea()<<endl;

    cout<<"

3

下列说法中错误的是(  )。

  • A.公有继承时基类中的public成员在派生类中仍是public成员
  • B.私有继承时基类中的protected成员在派生类中仍是protected成员
  • C.私有继承时基类中的public成员在派生类中仍是private成员
  • D.保护继承时基类中的public成员在派生类中仍是protected成员
4

下面的函数模板定义中错误的是(  )。

  • A.template<class Q>
  • B.template<class Q> QF(Qx){return Q-x;} QF(Qx){return x+x;}
  • C.template<class T>
  • D.template<class T> TF(Tx){return x*x;} boolP(Tx){return X>1;}
5

有关构造函数的说法不正确的是(  )。

  • A.构造函数名字和类的名字一样
  • B.构造函数在说明类变量时自动执行
  • C.构造函数无任何函数类型
  • D.构造函数有且只有一个
7

关系模型允许定义3类数据约束,下列不属于数据约束的是

  • A.实体完整性约束
  • B.参照完整性约束
  • C.域完整性约束
  • D.用户自定义的完整性约束
8

while和do-while循环的主要区别是

  • A.do-while的循环体至少无条件执行一次
  • B.while的循环控制条件比do-while的循环控制条件更严格
  • C.do-while允许从外部转到循环体内
  • D.do-while的循环体不能是复合语句
9

建立一个有成员对象的派生类对象时,各构造函数体的执行次序为(  )。

  • A.派生类、成员对象类、基类
  • B.成员对象类、基类、派生类
  • C.基类、成员对象类、派生类
  • D.基类、派生类、成员对象类
10

算法的空间复杂度是指

  • A.算法程序的长度
  • B.算法程序中的指令条数
  • C.算法程序所占的存储空间
  • D.算法执行过程中所需要的存储空间
11

下列哪个是C++语言的有效标识符?

  • A.No1
  • B.No.1
  • C.12345
  • D.int
12

表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是

  • A.showbase( )和eof( )
  • B.showpoint( )和eof( )
  • C.showpoint( )和bad( )
  • D.showpoint( )和good( )
13

关于友元,下列说法错误的是

  • A.如果类A是类B的友元,那么类B也是类A的友元
  • B.如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员
  • C.友元关系不能被继承
  • D.如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数
16

设有两个串p和q,求q在p中首次出现位置的运算称为(  )。

  • A.连接
  • B.模式匹配
  • C.求子串
  • D.求串长
18

判断char型变量c是否为小写字母的正确表达式是

  • A.‘a’<=c<=‘z’
  • B.(c>=A)&&(c<=z)
  • C.(‘a’>=c)||(‘2’<=c)
  • D.(c>=‘a’)&&(c<=‘z’)
20

数据库系统的核心是

  • A.数据库
  • B.数据库管理系统
  • C.模拟模型
  • D.软件工程
21

下列关于严格控制goto语句使用的理解中,错误的是(  )。

  • A.用一个非结构化的程序设计语言实现一个结构化的构造
  • B.若不使用goto语句会使功能模糊
  • C.在某种可以改善而不是损害程序可读性的情况下
  • D.goto语句可以完全不用
22

下列描述中,(  )是抽象类的特性。

  • A.可以说明虚函数
  • B.可以进行构造函数重载
  • C.可以定义友元函数
  • D.不能说明其对象
23

下面关于类和对象的描述中,错误的是

  • A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量
  • B.类和对象之间的关系是抽象和具体的关系
  • C.对象是类的实例,一个对象必须属于一个已知的类
  • D.类是具有共同行为的若干对象的统一描述体
24

已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是

  • A.堆排序
  • B.直接插入排序
  • C.快速排序
  • D.直接选择排序
26

与数学式子对应的C++语言表达式是

  • A.3*x^n/(2*x-1)
  • B.3*x**n/(2*x-1)
  • C.3*pow(x,n)*(1/(2*x-1))
  • D.3*pow(n,x)/(2*x-1)