一起答

自考C++程序设计2018年4月试题及答案解析

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 声明一个circle类,有数据成员Radius(半径, foat型),成员函数GetArea( )计算圆的面积。在main函数中声明一个circle类的对象c1,其半径为5.6。调用 GetArea( )函数计算c1的面积,并显示该计算结果(cout﹤"圆的面积:"﹤﹤c1. Getarea﹤endl;)。

  2. #include ﹤iostream.h﹥

    using namespace std;

    void main( )

    {

    int a[3][4]=

    {

    {1,2,7,8},{5,6,11,15},{9,20,3,7}

    };

    int m=a[0][0];

    int i, j;

    for(i=0; i﹤3; i++)

    for(j=0; j﹤4; j++)

    if(a[i][j]﹥m) m=a[i][j];

    cout﹤﹤"m is:" ﹤﹤endl;

    cout ﹤﹤m﹤﹤ endl;

    }

  3. #include ﹤ iostream.h﹥

    using namespace std;

    class example

    {public:

    example(int n)

     {

    i=n;cout﹤﹤"Constructing";

    }

    ~example( )

     {

    cout ﹤﹤"Destructing";

    }

    int get_i( )

    {

    return i;

    }

    private:

    int i;

    };

    int sqr_int( example o)

     {

    retum o. get_i( )*o. get_i( );

    }

    void main( )

     {

    example x(10);

    cout ﹤﹤x. get_i( )﹤﹤ endl;

    cout ﹤﹤ sqr_it(x)﹤﹤endl;

    }

  4. #include ﹤iostream﹥

    #include ﹤fstream﹥

    using namespace std;

    void main( )

    {

    char *p="abcde";

    _________myf("ab. txt");

    myf ﹤﹤p;cout﹤﹤"this is a txt file";

    _________;//关闭文件ab.txt

    }

  5. 完成程序,使其输出结果为n=2,sum=2n=3,sum=5n=5,sum=10

    #include ﹤iostream﹥

    using namespace std;

    class Sample

     {

    int n;

    static int sum;

    public:

    Sample(int x)

     {

    n=x;

    }

    void add( )

    {

    _________;

    }

    void disp( )

     {

    cout ﹤﹤"n="﹤﹤n﹤﹤"sum="﹤﹤sum﹤﹤end;

    }

    };

    _________;

    void main( )

     {

    Sample a(2), b(3), c(5);

    a. add( );

    a. disp( );

    b. add( );

    b. disp( );

    c. add( );

    c. disp( );

    }

  6. #include ﹤iostream﹥

    using namespace std;

    class base

    {

    _________;

    public:

    base (int x, int y)

    {

    a=x, b=y;

     }

    _________( base &p)

     {

    cout ﹤﹤p. a ﹤﹤" "﹤﹤p. b﹤﹤ endl;

    };

    void main( )

    {

    base b(78, 87);b. show(b);

    }

  7. 完成程序,使其输出结果为28

    _________

    using namespace std;

    int a[8]={1,2,3,4,5,6,7};

    void fun(int b[ ], int n);

    void main( )

    {

    int m=8;fun(a, m);

    cout ﹤﹤a[7]﹤﹤ endl;

    }

    void fun (int b[ ], int n)

     {

    int i;for(_________)b[7]+=b[i];

    }

  8. 完成程序,使其输出结果为x=30

    #include "stdafx. h"

    #include ﹤iostream﹥

    using namespace std;

    class Sample

    {private:

    intx;public:Sample( )

     {

    Sample(int a)

     {

     x=a;

    }

    void disp( )

    {

    cout﹤﹤"x="﹤﹤x ﹤﹤ endl;

    }

    friend Sample operator+( Sample &s1, Sample &s2);

    };

    _________

    Sample &s1,

     Sample &s2)

     {

    returm Sample(s1. x +s2. x);

    }

    void main( )

     {

    Sample obj1(10);

    Sample obj2(20);

    Sample obj3;

    _________;obj3. disp( );

    }

  9. #include using namespace std;

    class person

    {

    int x;public:void person( )

    {

    x=1;

     }

    void set( int a)

     {

    x=a;

    }

    void get( )

     {

    cout ﹤﹤x﹤﹤ endl;

    }

    };

    void main( )

    {

    person p;

    p. set(6);

    p. get( );

    }

  10. #include ﹤iostream﹥

    using namespace std;

    void main( )

    {

    int a[6]={1,2,3,4,5,6,7};

    int i;for(i=0; i﹤7; i++)

    cout ﹤﹤a[li] ﹤﹤ endl;

  11. #include ﹤ iostream﹥

    using namespace std;

    class f

    {

    int a, b;

    public:

    void set( int aa, int bb)

     {

    a=aa; b=bb

    }

    void show( )

     {

    cout ﹤﹤a ﹤﹤" "﹤﹤b﹤﹤ endl;

    }

    };

    void main ( )

     {

    f. set(1, 2); f. show( );

  12. #include ﹤iostream﹥

    using namespace std;

    void main( )

    {

    int a=11, b=12;

    const int *p=a;

    cout﹤﹤a﹤﹤b﹤*p﹤endl;

    }

  13. 在函数体之前加_________关键字可以防止覆盖函数改变数据成员的值。

  14. 当编译系统编译含有虚函数的类时,将为它建立一个虚函数表,表中的每一个元素都指向一个_________。

  15. #include ﹤iostream﹥

    using namespace std;

    void setzero(int &a)

     {

    a=0;

    }

    void main( )

    {

    int x=7; y=9;

    setzero(x);

    setzero(y);

    cout ﹤﹤x﹤﹤y ﹤﹤ endl;

    }

  16. 复制构造函数使用_________作为形式参数。

  17. 定义类的动态对象数组时,系统只能够自动调用该类的_________构造函数对其进行初始化。

  18. 使用对象的引用来初始化创建中的对象的函数是_________。

  19. 构造函数、析构函数和友元函数中,不是该类成员的是_________。

  20. 假定x是一个逻辑量,则x&&0的值为_________。

  21. 若有定义int a=3; 则执行完语句a+=a-=a*a; 之后,a的值为_________。

  22. 如果要把 Student类的返回值为void的成员函数 score( ),声明为类 Teacher的友元函数,则应在类 Teacher的定义中加入语句_________。

  23. 在C++中,变量的三个基本要素是指:变量名、变量类型和_________。

  24. 不同对象可以调用相名称的函数,但执行完全不同行为的现象称为_________。

  25. 用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参或_________的构造函数,否则应用程序会产生一个编译错误。

  26. 在C++程序中,对刚创建的对象进行初始化的工作由构造函数来完成;而对象被删除前的一些清理工作则是由_________函数来完成的。

  27. 在用 class定义一个类时,数据成员和成员函数的默认访间权限是_________。

  28. 输入流 istream用来处理标准输入的一个对象的是_________。

  29. 编译时的多态性通过_________函数实现。

  30. 假定x=5,y=6, 则表达式x++*++y的值为_________。

  31. 在类体外面定义成员函数时,必须用关键字_________重写类模板声明。

  32. C++提供的预处理语句有3种,文件包含、条件编译和_________。

  33. 面向对象程序设计不仅能进行功能抽象,而且能进行_________抽象。

  34. 使用setw( )时需要包含头文件(  )

    • A.iostream. h
    • B.fstream. h
    • C.iomanip. h
    • D.stdli
    • E.h
  35. 下列关于运算符重载的表述中,正确的是(  )

    • A.C++已有的任何运算符都可以重载
    • B.运算符函数的返回类型不能声明为基本数据类型
    • C.在类型转换符函数的定义中不需要声明返回类型
    • D.可以通过运算符重载来创建C++中原来没有的运算符
  36. 友元运算符@obj被C++编译器解释为(  )

    • A.operator@(obj)
    • B.operator@(obj, 0)
    • C.obj. operator@( )
    • D.obj. operator@( 0)
  37. 考虑函数原型 void test(int a, int b=7, char ch='*'),下面的函数调用中,属于不合法调用的是(  )

    • A.test(5)
    • B.test(5, 8)
    • C.test(6, '#')
    • D.test(0, 0, '*')
  38. 以下关于this指针的叙述中,正确的是(  )

    • A.任何与类相关的函数都有this指针
    • B.类的成员函数都有this指针
    • C.类的友元函数都有this指针
    • D.类的非静态成员函数才有this指针
  39. 如果有int x, *p; float y, *q; 则下面操作中,正确的是(  )

    • A.p=x
    • B.p=q
    • C.p=&x
    • D.p=&y
  40. 下列有关模板的描述中,错误的是(  )

    • A.模板把数据类型作为一个设计参数,称为参数化程序设计
    • B.使用时,模板参数与函数参数相同,是按位置而不是名称对应的
    • C.模板实例化参数类型包括数据类型和值
    • D.类模板与模板类是同一个概念
  41. 下列不是函数重载所要求的条件是(  )

    • A.函数名相同
    • B.参数个数不同
    • C.参数类型不同
    • D.函数返回值类型不同
  42. 用new运算符创建维数组的正确形式是(  )

    • A.int *p=new a[10];
    • B.float *p =new float[10];
    • C.int *p= new float[10];
    • D.int *p= new int[5]={1,2,3,4,5,6};
  43. 下列关于构造函数的描述中,错误的是(  )

    • A.构造函数可以设置默认参数
    • B.构造函数在定义类对象时自动执行
    • C.构造函数可以是内联函数
    • D.构造函数不可以重载
  44. 关于成员函数特征的描述中,错误的是(  )

    • A.成员函数一定是内联函数
    • B.成员函数可以重载
    • C.成员函数可以设置参数的默认值
    • D.成员函数可以是静态的
  45. 对于int *pa[5]; 的描述中,正确的是(  )

    • A.pa是一个指向数组的指针,所指向的数组是5个i型元素
    • B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量
    • C.pa[5]表示数组的第5个元素的值,是int型的值
    • D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
  46. 已知:int m=10; 下列表示引用的方法中,正确的是(  )

    • A.int &z;
    • B.int &t=1;
    • C.int &x=m;
    • D.float &f=&m;
  47. 对类中声明的变量,下列描述中正确的是(  )

    • A.属于全局变量
    • B.属于该类,某些情况下也可被该类不同实例所共享
    • C.只属于该类
    • D.任何情况下都可被该类所有实例共享
  48. 在C++中,类与类之间的继承关系具有(  )

    • A.自反性
    • B.对称性
    • C.传递性
    • D.反对称性
  49. 在类定义的外部,可以被访间的成员有(  )

    • A.所有类成员
    • B.private或protected的类成员
    • C.public的类成员
    • D.public或 private的类成员
  50. 下列关于delete运算符的描述中,错误的是(  )

    • A.它必须用于new返回的指针
    • B.对一个指针可以使用多次该运算符
    • C.它也适用于空指针
    • D.指针名前只用一对方括号,不管所删除数组的维数
  51. 局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用下列哪一项提供对全局变量的访问(  )

    • A.作用域运算符
    • B.指针运算符
    • C.提取运算符
    • D.插入运算符
  52. 下列关于C++标识符的命名不合法的是(  )

    • A.Pad
    • B.name_1
    • C.A#bc
    • D._a12
  53. 若有以下类型标识符定义:int x=2; char w=a; float y=23.45f; double z=45.6789; 则表达式w*x+y-z的结果类型是(  )

    • A.float
    • B.char
    • C.int
    • D.double