一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 有一个Person类,私有数据成员name、age和sex分别表示人的姓名、年龄和性别。雇员类Employee是Person的派生类,新增数据成员部门department和薪水salary。请用C++代码描述这两个类,并用Employee类的成员函数Display实现雇员的姓名、年龄、性别、部门和薪水的输出。(要求编写派生类的构造函数)

  2. 给出下面程序的输出结果

    #include ﹤iostream﹥

    using namespace std;

    void main( )

    {

    void sort( int s[ ]);

    int score[5];

    int i;

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

    score[i]=i;

    sort( score);

    cout﹤﹤"运行结果是:";

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

    cout﹤﹤score[i]﹤﹤" ";

    }

    void sort int s[ ])

    {

    int t;

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

    for (int j=i+1; j﹤5; j++)

    if(s[i]﹤s[j])

    {

    t=s[i];s[i]=s[j];s[j]=t;

    }

    }

  3. 给出下面程序的输出结果

    #include ﹤iostream﹥

    using namespace std;

    class Clock{

    public:

    Clock( )

     {

    cout﹤﹤"clock的构造函数"﹤﹤endl;

    }

    ~Clock( )

     {

    cout﹤﹤" clock的析构函数﹤﹤endl;

     }

    };

    class Date

    {

    public:

    Date( )

    {

    cout﹤﹤"Date的构造函数"﹤﹤endl;

    }

    ~Date( )

    {

    cout﹤﹤"Date的析构函数"﹤﹤endl;

    }

    };

    void main( )

    {

    Clock c;

    Date d;

    }

  4. 一个通讯录contacts有姓名name和电话tel两个属性,有三个成员函数searehN、insertN和deleteN分别完成查找、插入和删除功能,请完成contacts的类图。

  5. 类book,含有2个数据成员num编号和price价格,有成员函数set和display分别输入和显示书的编号和价格,在main中调用所有成员函数。

    #include ﹤ iostream﹥

    using namespace std;

    class book

    {

    private:char num[8];

    public:

    void set( )

    {

     cin﹥﹥mum﹥﹥price;

    }

    void display( )

    {

     cout﹤﹤ num﹤﹤" "﹤﹤ price﹤﹤ endl;

     }

    };

    void main( )

    {

    book b;________;

    b. display( );

    }

  6. 完成程序空白处,可参考以下运行结果:

    4!=24

    n=-2!

    不能计算n!

    程序执行结束

    #include ﹤iostream. h﹥

    int f(int n)

    {

    if(n﹤=0) throw n;

    int s=1;

    for( ________ )

    s *=i; //计算1*2*3…*n的值retum s;

    }

    void main( )

    {

    try

    {

    cout﹤﹤________﹤﹤endl;

    cout﹤﹤"-2!="﹤﹤f(-2)﹤﹤endl;

    }

    catch(int n)

     {

    cout﹤﹤"n="﹤﹤n﹤﹤"不能计算n!"﹤﹤endl;

    catch(...) { cout﹤﹤"出现异常!"﹤﹤endl;

    }

    cout﹤﹤"程序执行结束"﹤﹤endl;

    }

  7. 程序用于在屏幕上显示指定的文本文件的内容。

    #include ﹤iostream﹥

    #include ﹤fstream﹥

    using namespace std;

    int main( )

    {

    ifstream ifile;

    char fn[ 20], ch;

    cout﹤﹤"输入文件名";cin﹥﹥fn;

    ________; //打开指定的文件

    if(! ifile)

    {

    cout﹤﹤fn﹤﹤"文件不能打开"﹤﹤endl;

    retum 0;

    }

    while((ch = ifile. get())!=EOF)________; //输出字符

    cout﹤﹤ endl;

    ifile. close(); //关闭文件

    return 1;

    }

  8. #include ﹤iostream﹥

    using namespace std;

    ________ PI=3.1415;

    double length( float r) //圆的周长

    {

    return 2*PI*r;

    }

    ________ //矩形的周长{return 2*(x+y);

    }

    void main( )

    {

    float a =2, b=3, r=4;

    cout﹤﹤"圆周长"﹤﹤ length(r)﹤﹤endl;

    cout﹤﹤"矩形周长"﹤﹤ length(a,b)﹤﹤endl;

    }

  9. #include ﹤iostream. h﹥

    template ﹤typename AT﹥

    AT max(AT x, AT y)

    {

    retum(x﹥y)? x:y;void main( )

    {

    int i1=10, i2=56;

    double d1=50.344, d2=56.346;

    char c1='k', c2='n';

    cout﹤﹤"较大的整数是:"﹤﹤max(i1, i2)﹤﹤endl;cout﹤﹤"较大的双精度型数是:"﹤﹤max(d1, a);

    cout﹤﹤ endl;

    cout﹤﹤"较大的字符是:"﹤﹤max(c1, c2)﹤﹤endl;

    }

  10. #include ﹤iostream﹥

    #include ﹤string﹥

    using namespace std;

    int change( string s)

    {

    s=s+"dog!";

    cout﹤﹤ s﹤﹤ endl;

    }

    void main( )

    {

    string str("it is a ");

    change(str);

    }

  11. #include ﹤iostream﹥

    using namespace std;

    class Test {

    public:

    static int x;

    };

    int x=70;

    void main( )

    {

    cout﹤﹤Test:: x;

    }

  12. #include ﹤iostream. h﹥

    void swap( int &a, int &b)

    {

    a=a+b;

    b=a-b;

    a=a-b;

    }

    void main( )

    {

    int a =5,b=3;

    cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤endl;

    swap(&a, &b);

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

    }

  13. 运算符重载需要使用关键字“________”。

  14. #include ﹤iostream﹥

    using namespace std;

    template ﹤T﹥

    T max(T x, T y)

    {

    if(x﹥=y) return x;

    else retum y;

    }

    void main( )

    {

    cout﹤﹤ max(6.07, 9.08)﹤﹤ endl;cout﹤﹤ max(20, 50) ﹤﹤ endl;

    }

  15. 说明纯虚函数的一般形式为“class类名{ ________函数类型函数名(参数列表)=0; };”。

  16. 对MyFirst类定义析构函数是_________。

  17. insert(iterator it, const T&)是向it所指向量位置前_______一个对象。

  18. 使用关键字const修饰的数据成员称为________数据成员。

  19. ________是类的实例。

  20. 关键字private、public和________以后的成员分别叫做私有成员、公有成员和保护成员。

  21. C++函数的返回值类型可以是除________和函数以外的任何类型。

  22. 函数重载可使一个函数名具有多种功能,称这种特性为________。

  23. 将对象作为函数参数,是将实参对象的值传递给________。

  24. 使用关键字inline说明的函数称为________函数。

  25. 类对象一般都包括数据成员和________。

  26. 面向对象的程序设计方法是以________代表求解问题的中心环节。

  27. 对象的________只能由这个对象的操作来存取。

  28. 动态分配内存使用关键字________,释放内存使用关键字delete。

  29. 表达式“20/3*sqrt(4.0)/5”值的数据类型是________。

  30. 所谓“________”就是将一个新标识符和一块已经存在的存储区域相关联。

  31. C++程序有且只能有一个名为________的主函数。

  32. 语句“________;”用来向屏幕输出显示信息“Hello!”。

  33. C++注释方式“//”的有效范围从“//”至________结束。

  34. 下列对派生类的描述中,错误的是(  )

    • A.派生类至少应有一个基类
    • B.派生类的成员除了自己定义的成员外,还包含了它的基类成员
    • C.基类中成员访问权限继承到派生类中都保持不变
    • D.一个派生类可以作为另一个派生类的基类
  35. C++类体系中,不能被派生类继承的有(  )

    • A.静态数据成员
    • B.构造函数
    • C.虚函数
    • D.静态成员函数
  36. 用运算符delete删除—个动态对象时(  )

    • A.首先为该动态对象调用构造函数,再释放其占用的内存
    • B.首先释放该动态对象占用的内存,再为其调用构造函数
    • C.首先为该动态对象调用析构函数,荐释放其占用的内存
    • D.首先释放该动态对象占用的内存,再为其调用析构函数
  37. 下列字符常量的写法中,错误的是(  )

    • A.'\t'
    • B."b"
    • C.'*'
    • D.'a'
  38. 动态编联所支持的多态性称为运行时的多态性,支持的函数是(  )

    • A.构造函数
    • B.友元函数
    • C.继承
    • D.虚函数
  39. 类模板template ﹤class T﹥classX{…};,其中友元函数f对特定类型T(如int),使函数f(X ﹤int﹥&)成为X﹤int﹥模板类的友元,则其说明应为(  )

    • A.friend void f( );
    • B.friend void f(X﹤T﹥&);
    • C.friend void A::f( );
    • D.friend void C(T);
  40. 假设声明了以下的函数模板,错误的调用语句是(  )template ﹤class T﹥T max(T x, T y) { return (x﹥y)?x:y; }并定义了int i; char c;

    • A.max(i,i)
    • B.max(c,c)
    • C.max((int)c,i)
    • D.max(i,c)
  41. 若有说明:int n=2, *P=&n, *q=p;,则以下非法的赋值语句是(  )

    • A.n=*q
    • B.p=n
    • C.p=q
    • D.*q=*p
  42. 进行文件操作时需要包含头文件(  )

    • A.iostream
    • B.fstream
    • C.stdio
    • D.stdlib
  43. 在编译指令中,宏定义使用指令(  )

    • A.#define
    • B.#include
    • C.#typedef
    • D.#friend
  44. 下面说法正确的是(  )

    • A.生成对象时调用析构函数
    • B.定义类时必须写出该类的构造函数
    • C.调用构造函数时必须在主函数中明确写出调用格式
    • D.析构函数不可以重载
  45. 下列哪个函数不是类的成员函数(  )

    • A.构造函数
    • B.析构函数
    • C.友元函数
    • D.拷贝构造函数
  46. 下列有关重载函数的说法中错误的是(  )

    • A.重载函数必须具有不同的返回值类型
    • B.重载函数名必须相同
    • C.重载丞数参数个数可以不同
    • D.重载函数必须有不同的形参列表
  47. 下列关于纯虚函数与抽象类的描述中,错误的是(  )

    • A.纯虚函数是一种特殊的函数,它允许没有具体的实现
    • B.抽象类是指具有纯虚函数的类
    • C.一个基类的说明中有纯虚函数,该基类的派生类一定不再是抽象类
    • D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
  48. cout是C++的(  )

    • A.关键字
    • B.对象
    • C.类
    • D.运算符
  49. 如果A是抽象类,则下面正确的是(  )

    • A.A中没有纯虚函数
    • B.A a;
    • C.A a[3];
    • D.A *pa;
  50. 在下面有关析构函数特征的描述中,正确的是(  )

    • A.一个类中可以定义多个析构函数
    • B.析构函数名与类名完全相同
    • C.析构函数不能指定返回类型
    • D.析构函数可以有一个或多个参数
  51. 派生类的对象对它的哪一类基类成员是可以访问的(  )

    • A.公有继承的基类的公有成员
    • B.公有继承的基类的保护成员
    • C.公有继承的基类的私有成员
    • D.保护继承的基类的公有成员
  52. 假定有类AB,有相应的构造函数定义,能正确执行“AB a(4), b(5), c[3], *p[2]={&a, &b};”语句,请问执行完此语句后共调用该类析构函数的次数为(  )

    • A.14
    • B.5
    • C.3
    • D.1
  53. 一个函数的功能不太复杂,但要求被频繁调用,选用最适合的是(  )

    • A.内联函数
    • B.重载函数
    • C.递归函数
    • D.嵌套函数