一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 在字符串类string中实现一个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)

    #include ﹤iostream﹥

    #include ﹤string﹥

    class str{

    string s; int n, a[100], j, l;

    public: str(string &a){s=a; n=0; j=0; l=0;}

    ....test(....);

    int *geta( ){return a;}

    };

    请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)

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

    #include ﹤iostream﹥

    using namespace std;

    class base

    {

    private:

    int x;

    public:

    void setx(int a){x=a;}

    int getx( ){return x;}

    };

    void main( )

    {

    base a, b;

    a.setx(89);

    b=a;

    cout﹤﹤a.getx( )﹤﹤endl;

    cout﹤﹤b.getx( )﹤﹤endl;

    }

  3. 下面程序的运行结果如下:  20,22  60,22

    在答题纸上填上缺少的部分。源程序如下:

    #include ﹤iostream﹥

    using namespace std;

    class base

    {

    private:

    const int a;

    static const int b;

    public:

    base(int);

    void Show( );

    };

    _________=22;

    _________ : a(i){ } //初始化

    void base:: Show( )

    { cout﹤﹤a﹤﹤","﹤﹤b﹤﹤endl; }

    void main( )

    {

    base a1(20), a2(60);

    a1.Show( );

    a2.Show( );

    }

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

    #include ﹤iostream﹥

    using namespace std;

    class base

    {

    int x;

    public:

    void setx(int a){x=a;}

    int getx( ){return x;}

    };

    void main( )

    {

    int *p;

    base a;

    a.setx(15);

    p=new int(a.getx( ));

    cout﹤﹤*p;

    }

  5. 下面程序给出了一个从普通的基类派生出一个模板类的方法,在答题纸上填上缺少的部分。

    #include ﹤iostream﹥

    using namespace std;

    class Base

    {

    public:

    Base(int a){x=a;}

    int Getx( ){return x;

    void showb( ){cout﹤﹤x﹤﹤endl;  private:  int x;

    };

    template﹤class T﹥

    class derived: public Base

    {

    public:

    derived(T a, int b): _________

    { y=a; }

    T Gety( ){ return y; }

    void showd( ){cout﹤﹤y﹤﹤" "﹤﹤Gets( )﹤﹤endl;

    private:

    _________

    };

    void main( )

    { Base A(458);

    A. showb( );

    derived ﹤char *﹥B("It is",1357);

    B.showd( );

    }

  6. 在下面程序中的答题纸上填上适当的程序,使程序的输出结果如下:  67,90  源程序如下:

    #include ﹤iostream﹥

    using namespace std;

    class base

    {

    pnvate:

    int x,y;

    priblic:

    void initxy(int a,int b){x=a;y=b;}

    void show(base *p);

    };

    inline void base::show( _________ )

    {

    cout﹤﹤p-﹥x﹤﹤" "﹤﹤p-﹥y﹤﹤endl;

    }

    void print(base *p)

    {

    p-﹥show(p);

    }

    void main( )

    {

    base a;

    a.initxy(67,90);

    print( _________ );

    }

  7. 在答题纸上填上缺少的部分。源程序如下:

    #include ﹤iostream﹥

    #include ﹤fstream﹥

    using namespace std;

    void main( )

    {

    _________ myf("aB.txt"); //定义输出流文件,并初始化

    _________﹤﹤"This ia a TXT file"; //向文件输入字符串

    myf.close( );

    }

  8. 在答题纸上填上缺少的部分。源程序如下:

    #include ﹤iostream﹥

    using namespace std;

    class base

    {

    int a, b;

    public:

    base(int x, int y){a=x; b=y;}

    void show( _________ )

    {

    cout﹤﹤p.a﹤﹤″,″﹤﹤p.b﹤﹤endl;

    }

    }_________

    void main( )

    {

    base b(78,87);

    b.show(b);

    }

  9. #include ﹤iostream.h﹥

    class f{

    private: int x,y;

    public: f1(int a, int b){x=a; y=b;}

    void print( ){cout﹤﹤x--﹤﹤y﹤﹤endl;

    };

    main( ){

    f a;

    float x=1.0, y=2.0;

    a.f1(x,y);

    a.print( );

    }

  10. #include ﹤iostream.h﹥

    class test{

    private: int x;

    public: test(int a){x=a;}

    void set(int a){x=a;}

    void get( ){cout﹤﹤x﹤﹤endl;

    };

    class test1: public test{

    private: int x;

    public: test1(int a){x=a;}

    void set(int a){x=a;}

    void get( ){cout﹤﹤′ ′﹤﹤endl;

    };

  11. #include ﹤iostream.h﹥

    main( ){

    int x=7;

    const int *p=&x;

    *p=99;

    cout﹤﹤*p﹤﹤endl;

    }

  12. #include ﹤iostream.h﹥

    class test{

    private: int x; y;

    public: void f(int a, int b){x=a; y=b;}

    int max( ){return(x﹥y)?x:y;}

    };

    main( ){

    test a;

    a.f(1,3);

    cout﹤﹤a.max( )﹤﹤endl;

    }

  13. #include ﹤iostream.h﹥

    class point {

    private: float x, y;

    public: point(float a, float b){x=a; y=b;}

    void f( ){x=0; y=0;}

    void getx( ){cout﹤﹤x﹤﹤endl;

    void gety( ){cout﹤﹤y﹤﹤endl;

    };

    main( ) {

    point a(3.5);

    a.getx( );

    }

  14. 假定x=10,则表达式x﹤=10?20:30的值为_________。

  15. 如有“char *p="Hello";”,则语句“cout﹤﹤*(p+1);”输出值是_________。

  16. C++对其对象的数据成员和成员函数的访问是通过_________来限制的。

  17. 基类和派生类的关系称为_________。

  18. 复杂对象可以由简单对象构成,这种现象称为_________。

  19. 在公有继承的中基类数据成员在派生类中的访问权限_________。

  20. 类可将实现细节隐藏起来,这种机制称为_________。

  21. 在面向对象的程序设计中,通过封装实现数据隐藏;通过_________实现代码的复用。

  22. 当一个成员函数被调用时,该成员函数的_________指向调用它的对象。

  23. 以面向对象方法构造的系统,其基本单位是_________。

  24. C++中定义友元函数使用的关键字为_________。

  25. 拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是_________。

  26. 定义重载函数必须在参数的个数或参数的_________上与其它同名函数不同。

  27. 对于无返回值函数,定义函数时要用_________修饰函数类型。

  28. C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和_________。

  29. 含有_________的类称为抽象类。

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

  31. C++语言支持的两种多态性分别是编译时的多态性和_________的多态性。

  32. 在C++中,函数的参数有两种传递方式,它们分别是值传递和_________。

  33. 从本质上看,引用变量是被引用变量的(  )

    • A.拷贝
    • B.别名
    • C.复制
    • D.克隆
  34. C++程序的编译是以_________为单位进行的。

  35. C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是(  )

    • A.增加了一些新的运算符
    • B.允许函数重载,并允许设置缺省参数
    • C.规定函数说明符必须用原型
    • D.引进了类和对象的概念
  36. 假定有“char *p="Hello";”,若要输出这个字符串的地址值正确的写法为(  )

    • A.cout﹤﹤*p;
    • B.cout﹤﹤p;
    • C.cout﹤﹤&p;
    • D.cout﹤﹤(void*)p;
  37. 下面声明纯虚函数语句正确的是(  )

    • A.void fun( )=0;
    • B.virtual void fun( )=0;
    • C.virtual void fun( );
    • D.virtual void fun( ){ };
  38. 对于拷贝构造函数和赋值操作的关系,正确的描述是(  )

    • A.拷贝构造函数和赋值操作是完全一样的操作
    • B.进行赋值操作时,不会调用类的构造函数
    • C.当调用拷贝构造函数时,类的对象正在被建立并被初始化
    • D.拷贝构造函数和赋值操作不能在同一个类中被同时定义
  39. 使用重载函数的目的是(  )

    • A.共享函数数据
    • B.减少代码量
    • C.优化运行效率
    • D.提高可读性
  40. 以下说法中正确的是(  )

    • A.C++程序总是从第一个定义的函数开始执行
    • B.C++程序总是从main函数开始执行
    • C.C++中函数必须有返回值
    • D.C++中函数名必须唯一
  41. 对C++中主函数描述正确的是(  )

    • A.名称为main,可为多个
    • B.名称不限,可为多个
    • C.名称为main,必须有且只能有—个
    • D.名称不限,必须有且只能有—个
  42. 在下面的二维数定义正确的是(  )

    • A.int ary[5][ ];
    • B.int ary[ ][5]={{0,1,2}};
    • C.int ary[ ][5];
    • D.int ary[5,5];
  43. C++中要实现动态联编,调用虚函数时必须使用(  )

    • A.基类指针
    • B.类名
    • C.派生类指针
    • D.对象名
  44. 下面对析构函数的正确描述是(  )

    • A.系统不能提供默认的析构函数
    • B.析构函数必须由用户定义
    • C.析构函数没有参数
    • D.析构函数可以设置默认参数
  45. C++中类的成员默认为(  )

    • A.public
    • B.private
    • C.protected
    • D.static
  46. 在C++中类之间的继承关系具有(  )

    • A.自反性
    • B.对称性
    • C.传递性
    • D.反对称性
  47. 下列说法中,有关构造函数是正确的是(  )

    • A.任何一类必定有构造函数
    • B.可定义没有构造函数的类
    • C.构造函数不能重载
    • D.任何一类必定有缺省的构造函数
  48. 下面关于类和对象说法不正确是(  )

    • A.类由数据与函数组成
    • B.一个对象必属于某个类
    • C.对象是类的实例
    • D.一个类的对象只有一个
  49. 下面选项中不是类成员函数的是(  )

    • A.构造函数
    • B.析构函数
    • C.友元函数
    • D.静态函数
  50. 下列语句错误的是(  )

    • A.int val(20);
    • B.extern int val(20);
    • C.const int val;
    • D.extern const int val;
  51. My是一个类,则执行语句My a[3], *[2]; 之后,自动调用构造函数次数为(  )

    • A.2
    • B.3
    • C.4
    • D.5
  52. 下列不属于C++关键字的是(  )

    • A.extern
    • B.goto
    • C.free
    • D.default
  53. C++中定义标准输入的库为(  )

    • A.stdio
    • B.math
    • C.istream
    • D.stdlib