一起答

C++程序设计2009年10月真题试题及答案解析(04737)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 下面Shape类是一个表示形状的抽象类,Area( )为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。

    形状的抽象类声明如下:

    class Shape {

    public:

    virtual double Area( ) = 0;

    };

  2. #include

    using namespace std;

    class A {

    int a;

    public:

    A(int aa=0){a=aa;}

    ~A( ){cout<<″Destructor A!″<

    };

    class B: public A{

    int b;

    public:

    B(int aa = 0,int bb = 0):A(aa){b = bb;}

    ~B( ){cout<<″Destructor B!″<< b<< endl;}

    };

    void main( ){

    B x(5), y(6,7);

    }

  3. #include

    using namespace std;

    int main( ){

    int i,j;

    for(i=1;i<=4;i+=1)

    for(j=2;j<=4;j+=j){

    if(i+j<5)

    cout<<″+″;

    else

    cout<<″*″;

    }

    return 0;

    }

  4. 将下面程序补充完整,使程序运行结果为:

    C1ass A

    Class B

    程序如下:

    #include

    #include

    class A{

    public:

    virtual void GetA( ) = 0;

    };

    class B: public A{

    private:

    char str[32];

    public:

    void GetA( ){

    cout<<″Class A″<

    }

    const char * GetB( ) { __________

    }

    B(char * s){

    strcpy(str,s);

    }

    };

    void main( ){

    A * a;

    B b(″Class B″);

    a=__________;

    a->GetA( );

    cout<

    return;

    }

  5. 将下面程序补充完整,使程序可以输入学生信息并计算平均成绩。

    #include

    #include

    using namespace std;

    class Student{

    private:

    char name[255];

    int score[10];

    public:

    Student(char n[ ],int s[ ]){

    ___________;

    for(int i=0;i<10;i++){

    score[i]=s[i];

    }

    }

    void Show( ){

    int sum=0;

    for(int i=0;i<10;i++){

    _______________;

    }

    cout<<″名字:″<< name<<″,平均成绩:″<

    }

    };

    void main( ){

    char name[255];

    int score[10];

    cout<<″姓名:″;cin>>name;

    for(int i=0;i<10;i++){

    cout<<″成绩″<

    cin>>score[i];

    }

    Student s(name,score);

    s.Show( );

    }

  6. 将下面程序补充完整,使程序可以正常运行,并释放内存。

    #include

    __________

    class A {

    private:

    T * data;

    int length;

    public:

    A (int len){

    length=len;

    data=new T[len];

    }

    ~A( ){

    _________

    }

    T& operator[ ](int i){

    return data[i];

    }

    };

    int main( ){

    Aobj(2);

    obj[0]=1;

    obj[1]=2;

    cout<

    cout<

    return 0;

    }

  7. 请将下面程序补充完整,使程序可以正常打印9×9乘法口诀。

    #include

    using namespace std;

    class A {

    private:

    int a; int b;

    public:

    __________

    { a = x; b = y; }

    void set(int x,int y)

    { a = x; b = y; }

    void display( ){

    cout<

    }

    };

    int main( ){

    A a(1,1);

    for(int i=1;i<=9;i++){

    for(int j=1;__________;j++){

    a.set(j,i);

    a.display( );

    cout<<″″;

    }

    cout<

    }

    return 0;

    }

  8. 将下面程序补充完整,使程序输出结果为:

    Begin

    Welcome

    Show

    End

    程序如下:

    #include

    using namespace std;

    class A{

    public:

    __________{

    cout<<″Begin″<

    }

    void show( ){

    cout<<″Show″<

    }

    ___________{

    cout<<″End″<

    }

    };

    A object;

    int main( ){

    cout<<″Welcome″<

    object.show( );

    return 0;

    }

  9. #include

    using namespace std;

    class A{

    public:

    char name[255];

    private:

    char * getName( )

    { return name; }

    };

    class B:public A{

    public:

    B(char * n){

    strcpy ( name, n);

    }

    };

    void main( ){

    B b(″Hello!″);

    cout<<″Name:″<

    }

  10. #include

    using namespace std;

    int main ( ) {

    const int num = 20;

    int scores[num];

    for (int i=1;i<=num;i ++){

    scores[i]=i;

    }

    return 0;

    }

  11. #include

    using namespace std;

    class CMax {

    private:

    int xx; int yy;

    public:

    CMax(int x, int y)

    { xx = x; yy = y; }

    void setValue(int x,int y)

    { xx = x; yy = y;}

    int max( ){

    return xx >yy?xx:yy;

    }

    };

    void main( ){

    CMax m( );

    m.setValue(20,30);

    cout<<″Max=″<

    }

  12. #include

    using namespace std;

    class A {

    void show ( ) {

    cout<<″Hello!″;

    }

    };

    int main ( ) {

    A a; a.show ( );

    return 0;

    }

  13. #include

    using namespace std;

    int main ( ){

    int num; max=10; num=1

    while (num< max) num ++ ;

    cout<<″Num=″<< num;

    return 0;

    }

  14. 在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的_______特性。

  15. 执行下列代码

    cout<< showpoint<< 123.0;

    程序的输出结果是_______。

  16. 虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用_______关键字。

  17. vector类中用于返回向量中的最后一个对象的方法是_________。

  18. 在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为0.5,实现此操作的语句是_______。

  19. 在C++中,创建派生类对象时,总是先从_______的初始化开始的。

  20. 类的继承是指派生类继承基类的数据成员和_______。

  21. 若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。

  22. C++类中的_______函数在对象的生存期结束时被自动调用。

  23. 友元函数可以存取类的_______、公有成员和保护成员。

  24. 开发一个C++语言程序的步骤通常包括编辑、_______、连接、运行和调试。

  25. 在C++的类声明中,用public关键字声明的类成员的访问权限是_______。

  26. C++函数的返回类型可以是除数组与_______以外的任何类型。

  27. 能提供封装的C++关键字是_______。

  28. 将对象作为函数参数,是将实参对象的_______传递给形参对象,这种传递是单向的。

  29. 要使用STL库提供的对数组进行降幂排序算法,在源程序中需要包含的头文件是______。

  30. 在C++标准库中,用_______类来表示复数。

  31. 在C++语言的面向对象设计框架中,_______是程序的基本组成单元。

  32. C++语言提供的的基本控制结构可以分为3种类型:顺序结构、_______和循环结构。

  33. 执行代码double pi=3.1415192; cout<

  34. 基类中的public成员,通过public派生,其在派生类中的访问权限为(  )

    • A.不可访问
    • B.private
    • C.protected
    • D.public
  35. 不同对象调用同名函数,但导致完全不同行为的现象称为(  )

    • A.抽象
    • B.封装
    • C.继承
    • D.多态性
  36. 类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x 的值为(  )

    • A.未初始化
    • B.等于a.x的值为(  )
    • C.等于0
    • D.随机
  37. 下列哪个编译指令不属于条件编译指令(  )

    • A.#if
    • B.#else
    • C.#endif
    • D.#error
  38. 使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是(  )

    • A.strlen( )
    • B.strcap( )
    • C.strcat( )
    • D.strcmp( )
  39. 对类A,复制构造函数的原型是(  )

    • A.A::A(const A&);
    • B.A::A(const A *);
    • C.A::A(const A);
    • D.A::A( );
  40. 对class point,如使用point * ptr=new point[2]; 创建对象数组,则删除此数组使用的语句是(  )

    • A.delete ptr[2];
    • B.delete[ ] ptr;
    • C.delete ptr[ ];
    • D.delete[2] ptr;
  41. 函数int sum(int a=1, int b=1, int c=3)可与下列哪个函数同时声明(  )

    • A.double sum(int);
    • B.char sum(int, int);
    • C.int sum(double);
    • D.int sum(int, int, int);
  42. 下列访问成员的方式哪个是正确的(  )

    • A.对象名.对象成员名
    • B.对象指针名.对象成员名
    • C.对象名->对象成员名
    • D.类名->对象成员名
  43. 函数模板template void Func(T,T)可具有下列哪种实例化形式(  )

    • A.void Func(float, int)
    • B.void Func(char, char)
    • C.void Func(int, double)
    • D.void Func(bool, float)
  44. 函数int & min(int &, int &)返回参数中较小者,设有两整型变量int a=10; int b=15;在执行语句min(a, b)--; 之后,a,b值分别为(  )

    • A.9,14
    • B.9,15
    • C.10,14
    • D.10,15
  45. 声明函数为内联函数时所使用的关键字为(  )

    • A.const
    • B.inline
    • C.short
    • D.signed
  46. C++类中定义的成员默认访问属性为(  )

    • A.public
    • B.private
    • C.protected
    • D.friend
  47. 决定C++语言中函数的返回值类型的是(  )

    • A.return语句中的表达式类型
    • B.调用该函数时系统随机产生的类型
    • C.调用该函数时的主调用函数类型
    • D.在定义该函数时所指定的数据类型
  48. 从本质上看,引用是被引用变量的(  )

    • A.拷贝
    • B.别名
    • C.复制
    • D.克隆
  49. 下面关于数组的初始化正确的是(  )

    • A.char str[ ]={'a','b','c'};
    • B.char str[2]={'a','b','c'};
    • C.char str[1][2]={{'a','b'},{'e','d'}};
    • D.char str[ ][ ]={'a','b','c'};
  50. 无类型标识符是指(  )

    • A.void
    • B.bool
    • C.short
    • D.long
  51. 用于包含C++标准库iostream的预处理指令是(  )

    • A.#define
    • B.#include
    • C.#define 'iostream'
    • D.#include 'iostream'
  52. 调用声明为int result(int a, int b)的函数时,正确的方法是(  )

    • A.result(1, 2)
    • B.result(1)
    • C.result(0.1, 0.3)
    • D.result(1, 2, 3)
  53. 对C++中主函数描述正确的是(  )

    • A.名称为main,可为多个
    • B.名称不限,可为多个
    • C.名称为main,必须有且只能有一个
    • D.名称不限,必须有且只能有一个