一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 以下程序设计功能是:将结构体变量time 中的内容写到文件中。

      #include <iostream>

      using namespace std;

      struct date

      {

        int year;

        int month;

        int day;

      }

      int main ( )

      {

        date time = { 2005, 1, 1 };

        ofstream outdate;

        outdate.open( "d:\\date.txt", ios :: binary );

        outdate.write(____________, sizeof( tt ) );

        outdate.close();

        return 0;

      }

     则程序中空白处应该填入的语句为【 】。

  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.构造函数有且只有一个
  6. 软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及

    • 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的友元函数
  14. 在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是(  )。

    • A.O(n)
    • B.O(n2)
    • C.O(1092n)
    • D.0(n1092n)
  15. 阅读下面程序:#include <iostream.h>fun (int a, int b){int c;c=a+b;return c;}void main(){int x=6, y=7, z=8, r;r=fun( (x--, y++, x+y), z--);cout<<r<<end1;}则该程序的输出结果是(  )。

    • A.11
    • B.20
    • C.21
    • D.31
  16. 设有两个串p和q,求q在p中首次出现位置的运算称为(  )。

    • A.连接
    • B.模式匹配
    • C.求子串
    • D.求串长
  17. 当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是(  )。

    • 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’)
  19. 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是

    • A.10
    • B.8
    • C.6
    • D.4
  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.直接选择排序
  25. 多继承的构造顺序可分为如下四步: 

    ①所有非虚基类的构造函数按照它们被继承的顺序构造  

    ②所有虚基类的构造函数按照它们被继承的顺序构造  

    ③所有子对象的构造函数按照它们声明的顺序构造  

    ④派生类自己的构造函数体  

    这四个步骤的正确顺序是(  )。

    • 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)