一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 写一个程序,定义一个抽象类Shape,由它派生3个类:Square(正方形)、Trapezoid(梯形)和Triangle(三角形)。用虚函数分别计算几种图形面积、并求它们的和。要求用基类指针数组,使它每一个元素指向一个派生类对象。

    #include ﹤iostream.h﹥

    class Shape

    { public:

    virtual double area( )const=0;

    };

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

    include "iostream. h"

    void main( )

    {

    int x, y, z;  x=3;  y=x++;  z=++x;

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

    }

  3. 下面程序用来求直角三角形斜边长度。

    #include ﹤iostream. h﹥

    #include ﹤math.h﹥

    class Line;

    class Point;

    { private:

    double x, y;

    _________

    public:

    Point(double i=0, double j=0)

    { x=i; y=j; }

    Point(Point &p)

    { x=p.x; y=p.y; }

    };

    class Line

    {

     private:

    Point p1, p2;

    Line( Point &xp1, Point &xp2): _________ { }

    double GetLength( );

    };

    double Line:: GetLength( )

    {

    double dx =p2. x-p1. x;

    double dy =p2. y-p1. y;

    return sqrt( dx*dx +dy*dy);

    }

    void main( )

    {

     Point p1, p2(6, 8);

    Line L1(p1, p2);

    cout ﹤﹤L1. GetLength( )﹤﹤endl;

    }

  4. 给如下面程序输出结果。

    #include ﹤iostream. h﹥

    class Base

    {

     private:

    int Y;

    public:

    Base (int y=0)

    {

    Y=y;

    cout ﹤﹤"Base ("﹤﹤y ﹤﹤")\n";

    }

    ~Base( )

    {

     cout ﹤﹤"~Base( )\n";

    }

    void print( )

    {

    cout ﹤﹤Y﹤﹤" ";

     }

    };

    class Derived: public Base

    {

     private:

    int Z;

    public:

    Derived (int y, int z): Base(y)

    {

     Z=z;

    cout﹤﹤"Derived ("﹤﹤y﹤﹤","﹤﹤z﹤﹤"\n";

    }

    ~Derived( )

    {

     cout﹤﹤"~Derived( )\n";

     }

    void print( )

    {

    Base:: print( );

    cout ﹤﹤Z﹤﹤endl;

    }

    };

    void main( )

    {

     Derived d(10, 20);

    d. print( );

    }

  5. 编一个函数to_ lower( ),实现将字符串中的大写字母转换成相应小写字母。主函数输入数据并输出结果。

    #include "stdafx. h"

    #include ﹤iostream﹥

    _________;

    void main(void)

    {

    void to_lower (char a[ ]);

    char str[10];

    cin﹥﹥str;

    to_lower(str);

    cout﹤﹤str﹤﹤endl;

    }

    void to_ lower(char a[ ])

    {

    for(int i=0; i﹤10&&a[i]!='0'; i++)

    if( _________ )

    a[i]+=32;

    }

  6. 任意输入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);

    }

  7. 打印以下图案:  #include "stdafx. h"  #include ﹤iostream﹥  using namespace std;  void main( void)  {  int j, n;  for( _________ ) //i控制行号  {  for(j=1;j﹤i;j++) //j控制空格  cout ﹤﹤' ';  for( _________ ) //n控制星号  cout ﹤﹤"*";  cout ﹤﹤ endl;  }  }

  8. 用简单选择法对10个数排序,使其从小到大排列。

    #include "stdafx. h"

    #include ﹤iostream﹥

    using namespace std;

    int main( void)

    {

    int t;

    int num[ 10], t, j;

    for( _________ )

    cin ﹥﹥num[i];

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

    for(j=i+1;j﹤10;j++)

    if(num[i]﹥ num[j])

    {

    t=num[i];

    num[i]=num[j];

    _________;

    }

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

    cout ﹤﹤num[i]﹤﹤" ";

    }

  9. #include ﹤iostream﹥

    using namespace std;

    class A

    {

    static int x;

    int y;

    public:

    A(int a, int b)

    {

    x=a;  y=b;

    }

    int get( )

    {

    return x +y;

    }

    };

    x=5;

    int main( )

    {

    A a(1,2);

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

    return 0;

    }

  10.  #include ﹤iostream﹥

    using namespace std;

    class base{

    int a, b;

    pubic:

    void setzero( )

    {

    x=0; y=0;

    }

    void show( )

    {

    cout ﹤﹤x﹤﹤" "﹤﹤y﹤﹤endl;

    }

    };

    int main( )

    {

    base b;

    b. setzero 0, 0);

    return 0;

    }

  11. #include ﹤iostream﹥

    using namespace std;

    class A

    {

    int x;

    public:

    A(int a)

    {

    x=a;

    }

    void set( int a)

    {

    x=a;

    }

    void get( )

    {

    cout﹤﹤x﹤﹤endl;

    }

    };

    int main( )

    {

    const A a(4);

    a. set(6);

    a. get( );

    a. get(10);

    a. get( );

    return 0;

    }

  12. #include ﹤iostream﹥

    using namespace std;

    class base {

    int *p;

    public:

    base (int a)

     {

    p=&a;

    }

    int get( )

    {

    return p;

    }

    };

    int main( )

    {

    base b(3);

    cout﹤﹤b. get( );

    }

  13. #include ﹤iostream﹥

    using namespace std;

    clss base{

    int a;

    int get( )

    {

    return a;

    }

    void setValue(int b)

     {

    a=b;

    }

    int geta( )

    {

    return a;

    }

    };

    int main( )

    {

    base b;

    b. setValue (7);

    retum 0;

    }

  14. 局部对象和全局对象中,在同一程序中_______生存期最长。

  15. 如果要把类B的成员函数void fun( )说明为类A的友元函数,则应在类A中加入语句_______。

  16. 函数重载时,编译系统会根据_______或形参的个数来区分。

  17. 每个对象都是所属类的一个_______。

  18. 静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是_______。

  19. 在编译指令中,宏定义使用_______指令。

  20. 已知int *p=NULL,使用new为指针P申请一个存储大小为10的存放int型的空间,代码为_______。

  21. 为了实现运行时的多态性,派生类需重新定义基类中的_______。

  22. 在C++中有两种参数传递方式:传值和传_______。

  23. C++中ostream的直接基类_______。

  24. 由const修饰的对象称为_______。

  25. 如果通过同一个基类派生一系列的类,则将这些类总称为_______。

  26. 执行下列程序double a=3.1415926, b=3.14; cout﹤﹤setprecision(5)﹤﹤a﹤﹤ "," ﹤﹤setprecision(5)﹤﹤b﹤﹤endl; 程序的输出结果是_______。

  27. 基类的公有成员在派生类中的访问权限由_______决定。

  28. 在C++中,访问一个指针所指向的对象的成员所用的指向运算符是_______。

  29. 如果要把类B的成员函数void fun( )说明为类A的友元函数,则应在类A中加入语句_______。

  30. 在C++中,虚函数帮助实现了类的_______。

  31. 在类内部定义的公有(public)数据可以在类外进行存取,但_______和私有(private)数据不能在类外直接存取。

  32. 假定类AB中有一个公用属性的静态数据成员static int bb;在类外不通过对象名给该成员bb赋值为10的写法:_______。

  33. C语言中scanf命令在C++中改用:_______。

  34. 下列有关重载函数的说法中正确的是(  )

    • A.重载函数必须具有不同的返回值类型
    • B.重载函数参数个数必须相同
    • C.重载函数必须有不同的形参列表
    • D.重载函数名可以不同
  35. 当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数(  )

    • A.都是虚函数
    • B.只有被重新说明时才是虚函数
    • C.都不是虚函数
    • D.只有被重新说明为virtual时才是虚函数
  36. 类中定义的成员默认访问属性为(  )

    • A.public
    • B.private
    • C.protected
    • D.friend
  37. 拷贝构造函数的参数是(  )

    • A.某个对象名
    • B.某个对象的成员名
    • C.某个对象的引用名
    • D.某个对象的指针名
  38. 关于类模板的说法正确的是(  )

    • A.类模板的主要作用是生成抽象类
    • B.类模板实例化时,编译器将根据给出的模板实参生成一个类
    • C.在类模板中的数据成员具有同样类型
    • D.类模板中的成员函数没有返回值
  39. 有关多态性说法不正确的是(  )

    • A.C++语言的多态性分为编译时的多态性和运行时的多态性
    • B.编译时的多态性可通过函数重载实现
    • C.运行时的多态性可通过模板和虚函数实现
    • D.实现运行时多态性的机制称为动态多态性
  40. 关于友元函数的描述中,错误的是(  )

    • A.友元函数不是成员函数
    • B.友元函数只能访问类中私有成员
    • C.友元函数破坏隐藏性,尽量少用
    • D.友元函数说明在类体内,使用关键字friend
  41. 关于对象概念的描述中,说法错误的是(  )

    • A.对象就是C语言中的结构体
    • B.对象代表着正在创建的系统中的一个实体
    • C.对象是类的一个变量
    • D.对象之间的信息传递是通过消息进行的
  42. 下列说明语句中正确的是(  )

    • A.int a, &ra=a, &&ref=ra;
    • B.int&refa[10];
    • C.int a, &ra=a, &*refp=&ra;
    • D.int *pi, *&pref=pi;
  43. 类中能访问静态成员的函数是(  )

    • A.虚函数
    • B.静态成员函数
    • C.构造函数
    • D.析构函数
  44. 假定a为一个整型数组名,则元素a[4]的字节地址为(  )

    • A.a+4
    • B.a+8
    • C.a+16
    • D.a+32
  45. 下列有关构造函数的描述中,正确的是(  )

    • A.构造函数可以带有返回值
    • B.构造函数的名字与类名完全相同
    • C.构造函数必须带有参数
    • D.构造函数必须定义,不能缺省
  46. 关于类和对象不正确的说法是(  )

    • A.类是一种类型,它封装了数据和操作
    • B.对象是类的实例
    • C.一个类的对象只有一个
    • D.一个对象必属于某个类
  47. 存储下列数据,占用存储字节最多的是(  )

    • A.0
    • B.'0'
    • C."0"
    • D.0.0
  48. 关于new运算符的下列描述中,错误的是(  )

    • A.它可以用来动态创建对象和对象数组
    • B.使用它创建的对象和对象数组可以使用运算符delete删除
    • C.使用它创建对象时要调用构造函数
    • D.使用它创建对象数组时必须指定初始值
  49. 下列运算符中,优先级最高的是(  )

    • A.*
    • B.-﹥
    • C.&&
    • D.﹥=
  50. 设x=8,执行语句y=x++,则y等于(  )

    • A.6
    • B.7
    • C.9
    • D.8
  51. 要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(  )

    • A.内联函数
    • B.重载函数
    • C.内部函数
    • D.函数模板
  52. 编写C++程序一般需经过的几个步骤依次是(  )

    • A.编辑、调试、编译、连接
    • B.编译、调试、编辑、连接
    • C.编译、编辑、连接、运行
    • D.编辑、编译、连接、运行
  53. 在C++语言中用于注释的标识符是(  )

    • A.&
    • B.//
    • C.*
    • D./