一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 给定两个字符串对象S,P(P的长度小于S),实现一判断函数find,检测S是否完全包含P(串P是S的子串),若包含则返回P第一个字符在串S中的起始地址,否则返回-1。

    #include ﹤ iostream.h ﹥

    #include ﹤string﹥

    class str{

    string s,p;

    public:

    str(string&a,string&b){s=a;p=b;}

    ...find(...);

    };

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

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

    #include ﹤ iostream﹥

    using namespace std;

    class point{

    int num;

    public:

    point(int n)

    {cout﹤﹤"Initializing"﹤﹤n﹤﹤endl; num=n; }

    } ;

    void main( )

    {

    point A(88);

    cout﹤﹤"Entering main"﹤﹤endl;

    }

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

    #include ﹤ iostream﹥

    using namespace std;

    void fun( )

    {

    static int n=25;

    n--;

    cout﹤﹤"n="﹤﹤n﹤﹤endl;

    }

    void main( )

    {

    for(int i=0;i﹤=2;i++)fun( );

    }

  4. 在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。202122a[0]=20a[1]=21a[2]=22程序清单如下:

    #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[3],*p;a[0].setx(20);

    a[1].setx(21);

    a[2].setx(22);

    for(p=a; p﹤a+3; p++)

    _________

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

    _________

    }

  5. 在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=2,y=3源程序如下:

    #include ﹤ iostream.h ﹥

    class Sample{

    int x,y;

    public:

    Sample( ){x=y=0;}

    Sample( _________ ){x=a; y=b;}

    void disp( )

    {

    cout﹤﹤"x="﹤﹤",y="﹤﹤y﹤﹤endl;

    }

    } ;

    void main( )

    {

    Sample s(2,3), _________

    p-﹥disp( );

    }

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

    class test

    {

    private:

    int n1;

    float f1;

    public:

    test(int,float f);

    test(test&);

    };

    test::test( _________ )

    {n1=n; f1=f;}

    test:: test(test&t)

    {n1=t.n1;

    f1=_________; }

  7. 在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=1,y=2x=30,y=40源程序如下:

    #include ﹤ iostream﹥

    class Sample{

    int x,y;

    public:

    Sample( ){x=y=0;}

    Sample(int i,int j){x=i;y=j;}

    void copy(Sample & s);

    void setxy(int i,int j){x=i;y=j;}

    void print( ){cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;

    };

    void Sample::copy ( _________ )

    {

    x=s.x; y=s.y;

    }

    void func( _________ )

    {

    s1.setxy(10,20);

    s2.setxy(30,40);

    }

    void main( )

    {

    Sample p(1,2),q;

    q.copy(p);

    func(p,q);

    p.print( );

    q.print( );

    }

    Sample&s

    }

  8. 在下面程序中的下划线处填上适当的语句,使程序的输出结果如下:11,7711,77源程序如下:

    #include ﹤ iostream﹥

    using namespace std;

    class base{

    private:

    int x,y;

    public:

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

    void show( )

    { _________ }

    } ;

    void main( )

    {

    base a,b;

    _________

    a.show( );

    b=a;b.show( );

    }

  9. #include ﹤ iostream. h ﹥

    class point{

    int x;public: void init ( int a) { x = a; }

    int getx( ){ return x;}

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

    };

    void main( ){point a;

    a. init (20,30) ;

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

    }

  10. #include ﹤ iostream. h ﹥

    class f{

    private: float x, y;

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

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

    void move(float a,float b){x =x +a; y =y-b;}

    void get ( ) { cout ﹤﹤ x ﹤﹤' '﹤﹤ y ﹤﹤ endl; }

    };

    void main( ){

    f *p,a;

    a. f1(1.6,3.8) ;

    p=&a;p. get( ) ;

    }

  11. #include ﹤ iostream.h ﹥

    template ﹤ class T ﹥

    class f{

    private: T x, y;

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

    T max( ){retum(x﹥y)? x:y;}

    };

    void main( ){

    f ﹤int﹥a;a. f1(3.5,3.8) ;

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

    }

  12. #include ﹤ iostream. h ﹥

    class test{

    private: static int x; int y;

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

    };

    void main( ) {

    test a;

    a. testl (2,3) ;

    }

  13. #include ﹤ iostream. h ﹥

    void main( ){

    float * p;p = new float[ 5 ] ;

    for( i =0;i ﹤5 ;i++ ){ cin ﹥﹥ * (p+i) ;

    cout ﹤﹤ * (p+i) ﹤﹤ endl;}

    delete [ ] p;

    }

  14. 设有如下定义:int x; 若要将整型变量y定义为变量x的引用,则应使用的语句是_________。

  15. 在C++中,赋值表达式y=x++的含义是_________。

  16. 无论变量x和y是整型还是浮点类型,x*y都表示这两个变量的积,这是典型的_________的例子。

  17. string类中用于交换两个字符串对象的值的成员函数为_________。

  18. 执行下列代码int a=29, b=1001;cout﹤﹤a﹤﹤setw(6)﹤﹤b﹤﹤endl;}程序输出结果是:_________。

  19. 设int max(int,int)表示计算两个整数中的最大值,则执行语句“cout﹤﹤max(max(2,3),max(7,8));”的输出结果是_________。

  20. 函数fun的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类型,另一个参数是int类型引用,声明函数fun的原型的语句为_________。

  21. 对象的行为是定义在对象属性上的一组_________的集合。

  22. 对于c++类中的成员,若未使用访问权限关键字进行说明,默认的权限是_________。

  23. UML是一种可视化建模语言,主要用于面向对象的_________和建模。

  24. 复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为_________函数。

  25. 在常成员函数里不能更新对象的数据成员,也不能调用该类中没用_________关键字修饰的成员函数。

  26. 字符串类型的变量一般用_________和字符数组类型的变量表示。

  27. 在一个C++程序中,每个变量都必须遵循_________的原则。

  28. 在C++中,利用向量类模板定义一个具有20个int类型的向量B,实现此操作的语句是:_________。

  29. 通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员这时就成了派生类的_________。

  30. C++程序的头文件和源程序文件扩展名分别为_________和.cpp。

  31. 设为类A添加一个纯虚函数Fun,其第一个参数类型为整型,第二个参数类型为字符型,函数返回值类型为整型。实现此操作的语句是_________。

  32. C++中重载“+”运算符的函数名是_________。

  33. 在调用函数f1( )的过程中,又调用了函数f1( ),这种调用称为_________调用。

  34. 面向对象不仅进行功能抽象,还要进行(  )

    • A.动态抽象
    • B.消息抽象
    • C.数据抽象
    • D.算法抽象
  35. 下列对静态成员函数描述正确的是(  )

    • A.静态成员函数中可使用1个this指针
    • B.静态成员函数中不能使用this指针
    • C.静态成员函数中可使用多个this指针
    • D.静态成员函数中只可使用1个that指针
  36. 在下列派生中,子类和父类间是isa关系的是(  )

    • A.private
    • B.protected
    • C.public
    • D.publish
  37. 友元的声明可出现在(  )

    • A.类的私有部分
    • B.类的公有部分
    • C.类的保护部分
    • D.类的任何部分
  38. 对象的构造函数调用顺序取决于(  )

    • A.对象成员在初始化列表中给出的顺序
    • B.对象成员在类中声明的顺序
    • C.对象成员与在初始化列表中顺序和类中声明顺序均有关
    • D.随机顺序
  39. 析构函数被调用的时间点是(  )

    • A.对象被创建时
    • B.对象被销毁时
    • C.不会被调用
    • D.主函数被调用时
  40. 对于类中的成员,使用private修饰,表明该成员的访问权限是(  )

    • A.公有的
    • B.私有的
    • C.保护的
    • D.不可见的
  41. 使用new创建的对象,对其生命周期描述正确的是(  )

    • A.由系统决定
    • B.由用户控制
    • C.全局生命周期
    • D.永久存在
  42. c++中专门定义一个仅在模板中使用的参数类型的关键字是(  )

    • A.const
    • B.inline
    • C.short
    • D.typename
  43. C++中函数返回值类型不可以是(  )

    • A.引用
    • B.指
    • C.结构
    • D.数组
  44. 声明函数int Func(int a =0,int b=3,int c=4)相当于声明了几个函数形式(  )

    • A.1
    • B.2
    • C.3
    • D.4
  45. 设函数void swap(int,int)将交换两形参数值,如有两整型变量int a=10; int b=15,则执行swap(a,b); 之后,a,b值分别为(  )

    • A.15,10
    • B.15,15
    • C.10,15
    • D.10,10
  46. 设函数void subone(int)将形参值减1,如有整型变量int b=10;则执行subone(b)后,b的值为(  )

    • A.9
    • B.10
    • C.11
    • D.未知
  47. 构造函数用于(  )

    • A.定义对象
    • B.初始化对象
    • C.清除对象
    • D.普通计算
  48. 对于new类型名[size]描述正确的是(  )

    • A.申请可以存储size个字节的空间
    • B.申请可以存储1个该数据类型的空间
    • C.申请可以存储size个该数据类型对象的空间
    • D.申请可以存储1个字节的空间
  49. 使用下列哪个流格式控制符可以设置转换基数为十六进制(  )

    • A.dec
    • B.oct
    • C.hex
    • D.endl
  50. 用于标识长整型常量的前缀或后缀是(  )

    • A.无前后缀
    • B.后缀L或l
    • C.前缀零
    • D.前缀0x
  51. 下列选项中不是C++关键字的是(  )

    • A.bool
    • B.int
    • C.float
    • D.vat
  52. 如想使用std命名空间,正确的程序语句是(  )

    • A.using std;
    • B.namespace std;
    • C.using namespace;
    • D.using namespace std;
  53. C++中注释“/*”的有效范围是(  )

    • A.从“/*”开始到行尾
    • B.从“/*”开始后不终止
    • C.从“/*”开始到“//”为止
    • D.从“/*”开始到“*/”为止