一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 定义一个图形类(figure),其中有保护类型的成员数据:高度(height)和宽度(width),一个公有的构造函数。由该图形类建立两个派生类:矩形类和等腰三角形类。在每个派生类中都包含一个函数area( ),分别用来计算矩形和等腰三角形的面积。其中,主函数已给出,请完成其他部分的代码。

    int main( )

    {

    triangle tri(2, 3);

    rectangle rec(2, 3);

    cout ﹤﹤"The area of triangle is: "﹤﹤ tri. area( )﹤﹤endl;cout ﹤﹤"The area of rectangle is: "﹤﹤rec. area( )﹤﹤ endl;return 0;

    }

  2. #include ﹤iostream﹥

    using namespace std;

    class CBase

    {

    public:

    void fun( );

    };

    void CBase:: fun( )

    {cout﹤﹤"调用基类类的函数fun( )\n";}

    class CDerived:

    public CBase

    {public:void fun( );

    };

    void CDerived:: fun( )

    { cout﹤﹤"调用派生类的函数fun( )\n”;

    }

    void main( )

    {

    CDerived d1;

    CBase *pd=&d1;

    CBase &pd=d1;

    d1. fun( );

    pb-﹥fun( );

    pd.fun( );

    }

  3. #include ﹤iostream﹥

    using namespace std;

    int a[ ]={2,4,6,7,10};

    int &index( int i)

    { retum a[i]; }

    void main( ) {

    int i;

    _________

     //调用 index函数,将数组a中的元素7替换为8

    for( _________ ) //输出数组a

    cout﹤﹤a[i]﹤﹤" ";

    }

  4. #include ﹤iostream﹥

    #include ﹤strinh﹥

    #include ﹤iomanip﹥

    using namespace std;

    class student

    {

    char name[ 8];

    int deg;

    char level[7];

    friend class process; //说明友元类

    public:

    student( char na[ ],

     int d)

    {

    strcpy(name,na);

    deg=a;

    }

    };

    class process

    {

    public:

    void trans( student &s)

    {

    int i=s. deg/10;

    switch(i)

    {

    case 9:

    strcpy(s. level, "优"); break;

    case 8:

    stecpy(s. level, "良"); break;

    case 7:

    strcpy(s. level, "中"); break;

    case 6:

    strcpy(s. level, "及格");

    break;default:

    strcpy(s. level, "不及格"); break;

    }

    }

    void show( student &s)

    {cout ﹤﹤setw(10)﹤﹤s.name﹤﹤setw(4)﹤﹤s. deg﹤﹤ setw(8)﹤﹤s.level﹤﹤ endl;}

    };

    void main( )

    {student st[ ]={ student("Jack", 78), student ("Lucy",92),student("Lily", 62), student("Tom", 99 )};

    process p;

    cout﹤﹤"结果:"﹤﹤"姓名"﹤﹤setw(6)﹤﹤"成绩"﹤﹤sew(8)﹤﹤"等级"﹤﹤endl;

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

    {

    p. trans(st[i]);

    p. show(st[i]);

    }

    }

  5. 任意输入10个同学的成绩,计算其平均成绩。要求用函数average( )计算平均成绩。主函数输入数据并输出结果。

    #include "stdafx.h"

    #include ﹤iostream﹥

    using namespace std;

    void main(void)

    {

    float average(float a[ ]);

    float score[10];

    for( _________ )

    {

    cin﹥﹥score[i];

    }

    cout ﹤﹤"average: "﹤﹤ average( score)﹤﹤endl;

    }

    float average( float a[ ])

    {

    float sum =0;

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

    {

    _________

    }

    return (sum/10);

    }

  6. 下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:Der1 called!

    Der2 called!

    #include ﹤ iostream. h﹥

    class Base

    { public:

    _________;

    };

    class Der1: public Base

    { public:

    void display( ) { cout ﹤﹤"Der1 called! "﹤﹤endl; }

    };

    class Der2: public Base

    { public:

    void display( ) { cout ﹤﹤"Der2 called! "﹤﹤endl; }

    };

    void fun( _________ )

    { p-﹥display( ); }

    void main( )

    { Der1 b1;

    Der2 b2;

    Base * p=&b1;

    fun(p);

    p=&b2;

    fun(p);

    }

  7. 完成下面类中成员函数的定义。

    #include ﹤iostream﹥

    #include ﹤string﹥

    using namespace std;

    class str

    { private:

    char * st;

    public:

    str(char *a)

    {

    set (a);

    }_________ //运算符“=”重载函数

    {

    delete st;set(a.st);

    return * this;

    }

    void show( )

    {

    cout ﹤﹤ st ﹤﹤ endl;

     }

    ~str( )

     { delete st; }

    void set(char *s);

    {

    _________strcpy( st, s);

    }

    };

    void main( );

    {

    str s1("hello"),

    s2("world");

    s1. show( ),

    s2.show( );

    s2=s1;

    s1. show( ),

    s2.show( );

    }

  8. Test_Static类内有一静态成员变量num,且初始值设为15。

    #include ﹤iostream﹥

    using namespace std;

    class Test_Static

    {

    private:_________

    public:

    Test_Static(int);void print( );

    };_________

    Test_Static:: Test_Static(int n)

    {

    num=n;

    }

    void Test_Static:: print( )

    {

    cout﹤﹤num﹤﹤endl;

    }

    void main( )

    {

    Test_Static ts(10);ts.print( );

    }

  9. #include ﹤iostream﹥

    using namespace std;

    int main( )

     {

    int a= 10;

    int *p1=NULL;

    int *p2=a;

    cout ﹤﹤p1﹤﹤*p2﹤﹤endl;

    return 0;

    }

  10. #include ﹤iostream﹥

    using namespace std;

    void main( )

    {

    int x1(3), x2(8);

    int * const p =&x1;

    cout ﹤﹤*p﹤﹤ endl;

    p=&x2;

    cout ﹤﹤*p﹤﹤ endl;

    }

  11. #include ﹤iostream﹥

    using namespace std;

    class INTEGER

    {

    public:

    INTEGER(int a){ this -﹥a=a;

     }

    protected:

    int a;friend void Print( const INTEGER& obj);

    };

    void INTEGER:: Print( const INTEGER & obj)

    {

    cout ﹤﹤ obj. a;

    }

    void main( )

    {

    INTEGER obj(4);

    Print(obj);

    }

  12. #include ﹤iostream﹥

    using namespace std;

    void setzero( int &a) {

    a=0;

    }

    int main( ) {

    int x1=10; x2=20;

    setzero(x1);

    etzero(x2);

    cout ﹤﹤x1 ﹤﹤x2 ﹤﹤endl;

    return 0;

    }

  13. #include ﹤iostream﹥

    #include ﹤string﹥

    using namespace std;

    class Base

    {

    public:

    Base(const char *na){strcpy( name, na); }

    private:

    char name [80];

    };

    class Derived: public Base

    { public:

    Derived( const char *nm): Base(nm) { }

    void show( );

    };

    void Derived: :show( )

    { cout﹤﹤"name:"﹤﹤name﹤﹤endl;

    }

    void main( )

    { Derived b1("B");

    b1. show( );

    }

  14. 下面程序运行的结果是_________。

    #include ﹤iostream. h﹥

    void main( ) {

    cout. fill('*');

    cout. width(6);

    cout ﹤﹤"hello"﹤﹤ endl;

    cout. clear( ); }

  15. 举出C++中两种代码复用的方式:_________、复用。

  16. 为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与_________配对。

  17. C++程序的编译是以_________为单位进行的。

  18. 重载函数在参数类型或参数个数上不同,但_________必须相同。

  19. 已知有20个元素int类型向量V1,若用Ⅵ1初始化为V2向量,语句是_________。

  20. 语句序列fstream infile;infile. open("data. dat");的功能可用一个语句实现,这个语句是_________。

  21. 假设int a=1, b=2; 则表达式(++a/b)*b--的值为_________。

  22. C++程序的源文件扩展名为_________。

  23. 在C++中,有两种给出注释的方法。一种是沿用C语言的注释符,即/**/。另一种是从它开始,直到它所在行尾的字符都为注释的注释符,即_________。

  24. 使用new为int数组动态分配10个存储空间是_________。

  25. C++流库预定义了4个流,它们分别是cin、cout、clog和_________。

  26. C++支持两种多态性:_________时的多态性和运行时的多态性。

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

  28. 重载的运算符保持其原有的操作数、_________和结合性不变。

  29. 执行下列代码string str("NihaoC++");cout﹤﹤str. substr(5,3);程序的输出结果是_________。

  30. C++中有两种继承:单一继承和_________。

  31. 抽象类中至少要有一个_________函数。

  32. vector类中用于删除向量中的所有对象的函数是_________。

  33. 已知:fun( )函数是一个类的常成员函数,它无返回值,下列表示中,是正确的是(  )

    • A.void func( ) const;
    • B.const void func( );
    • C.void const func( );
    • D.void func( const);
  34. _________通常使用对象的引用来初始化创建中的对象。

  35. 关于this指针的说法错误的是(  )

    • A.this指针必须显式声明
    • B.当创建一个对象后,this指针就指向该对象
    • C.动态成员函数拥有this指针
    • D.静态成员函数不拥有this指针
  36. 已知类A是类B的友元,类B是类C的友元,则(  )

    • A.类A一定是类C的友元
    • B.类C一定是类A的友元
    • C.类C的成员函数可以访问类B的对象的任何成员
    • D.类A的成员函数可以访问类B的对象的任何成员
  37. 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是(  )

    • A.A1.p=5;
    • B.A1-﹥p=5;
    • C.A1.*p=5;
    • D.*A1.p=5;
  38. 以下能正确定义数组并正确赋初值的语句是(  )

    • A.int N=5, b[N][N];
    • B.int a[2]={{1},{3},{4},{5}};
    • C.int c[2][ ]={{1,2},{3,4}};
    • D.int d[3][2]={{1,2},{3,4}};
  39. 关于函数模板,描述错误的是(  )

    • A.函数模板必须由程序员实例化为可执行的函数模板;
    • B.函数模板的实例化由编译器实现;
    • C.一个类定义中,只要有一个函数模板,则这个类是类模板;
    • D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化;
  40. 按照标识符的要求,不能组成标识符的是(  )

    • A.连接符
    • B.下划线
    • C.大小写字母
    • D.数字字母
  41. 下列运算符中,在C++语言中不能重载的是(  )

    • A.*
    • B.﹥=
    • C.::
    • D./
  42. 在编译指令中,宏定义使用哪个指令(  )

    • A.#if
    • B.#include
    • C.#define
    • D.#error
  43. 假定一个类的构造函数为A(int aa, int bb) { a=aa++; b=a*++bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为(  )

    • A.4和5
    • B.4和20
    • C.4和24
    • D.20和5
  44. 以下基类中的成员函数表示纯虚函数的是(  )

    • A.virtual void vf(int)
    • B.void vf(int)=0
    • C.virtual void vf( )=0
    • D.virtual void yf( int) { }
  45. 实现两个相同类型数加法的函数模板的声明是(  )

    • A.add(T x, T y)
    • B.T add(x, y)
    • C.T add(T x, y)
    • D.T add(T x,T y)
  46. 如果表达式++a中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为(  )

    • A.operator ++(1)
    • B.operator ++(a)
    • C.operator ++(a, 1)
    • D.operator ++( )
  47. 类Cat是类Animal的公有派生类,类Animal和类Cat中都定义了虚函数func( ),p是一个指向类Animal对象的指针,则p-﹥Animal:: func( )将(  )

    • A.调用类Animal中的函数func( )
    • B.调用类Cat中的函数func( )
    • C.根据p所指的对象类型而确定调用类Animal中或类Cat中的函数func( )
    • D.既调用类 Animal中函数,也调用类Cat中的函数
  48. 通常拷贝构造函数的参数是(  )

    • A.某个对象的成员名
    • B.某个对象的指针名
    • C.某个对象的引用名
    • D.某个对象名
  49. 下列不是类的成员函数的(  )

    • A.友元函数
    • B.构造函数
    • C.析构函数
    • D.拷贝构造函数
  50. 适宜采用inline定义函数情况是(  )

    • A.函数体含有循环语句
    • B.函数体含有递归语句
    • C.函数代码多、不常调用
    • D.函数代码少、频繁调用
  51. 下列关于对静态数据成员的描述中,正确的是(  )

    • A.静态数据成员不能用 public控制符修饰
    • B.静态数据成员可以直接用类名或者对象名来调用
    • C.静态数据成员不可以被类的对象调用
    • D.静态数据成员不能用 private控制符修饰
  52. 要求指针p既不可修改其本身的内容,也不可修改其所指向地址的内容,定义正确的(  )

    • A.const char *p="ABCD";
    • B.char *const p="ABCD";
    • C.char const *p="ABCD";
    • D.const char * const p="ABCD";
  53. 在C++中,类与类之间的继承关系具有(  )

    • A.自反性
    • B.对称性
    • C.传递性
    • D.反对称性