一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 设计一个圆类circle和一个桌子类table。circle类包含私有数据成员radius和求圆面积的成员函数getarea( );table类包含私有数据成员height和返回高度的成员函数getheight( )。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。其中,main函数已给出。请完成程序的其他部分。

    void main( ){roundtable rt(0.8,1.2,"黑色");

    cout﹤"圆桌属性数据"﹤endl;cout﹤﹤"高度:"﹤﹤rt.getheight( )﹤"米"﹤﹤endl;

    cout﹤"面积:"﹤﹤tr. geared( )﹤"平方米"﹤﹤endl;

    cout﹤﹤"颜色"﹤﹤rt. getcolor( )﹤﹤endl;}

  2. #include ﹤iostream.h﹥

    using namespace std;

    class Sample

     {

    protected:

    int x;

    public:

    Sample( )

     {

    x=0;

     }

    Sample(int val)

     {

     x=val;

    }

    void operator++( )

    {

     x++;

    }

    };

    class Derived:

    public Sample

    {

    int y;

    public:

    Derived( ):

    Sample( )

     {

     y=0;

    }

    Derived ( int val1, int val2):

    Sample(val1 )

     {

     y=val2;

    }

    void operator--( )

     {

    x--; y--;

    }

    void disp( )

    {

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

    }

    };

    void main( )

     {

    Derived d(3, 5);

    D. disp( );d++;

    D. disp( );d--;d--;

    D. disp( );

    }

  3. #include ﹤iostream﹥

    using namespace std;

    void Result(char ch)

    {

    switch(ch)

    {

    case 'A':

    case 'a':

     cout ﹤﹤"well!";

    break;

    case 'B':

     case 'b':

    cout ﹤﹤"good!";

     break;

    case 'C':

    case 'c':

    cout ﹤﹤"pass!";

    break;

    default:

    cout ﹤﹤"bad!"; break;

    }

    }

    void main( )

    {

    char a1='b', a2='C', a3='f';

    cout ﹤﹤"Results:"﹤ endl;

    Result(a1);

    Result(a2 );

    Result(a3);

    Result('A');

    }

  4. #include ﹤iostream.h﹥

    class Point

    {

    int X,Y;

    public:

    Point(int x=0, int y=0)

    {

     X=x; Y=y; Countp ++;

    }

    Point( point &p)

    {

    X=p. X; Y=p.Y;

     }

    ~Point( )

    {

     Countp--;

     }

    _____________;

    static int Countp;void display( )

    {

     cout ﹤﹤X﹤﹤", "﹤﹤Y﹤﹤", ";

     }

    };

    Point myfun( Point p1, Point p2, Point p3)

    {

     Point tmp(p1. X+p2. X+P3. X, p1. Y+p2.Y+p3. Y);

    return tmp;

    }

    int Point:: Countp =0;

    void main( )

    {

     Point pp,p1(1,2),p2(1);

    Point p=myfun(pp0, pp1, pp2);

    p. display ( );

    _____________; //输出Countp的值

    }

  5. 完成程序,使其结果为x=6,y=10x=11,y=10

    #include ﹤iostream.h﹥

    using namespace std;

    class Sample

    {

    private:int x;

    _____________;

    public:

    Sample (int a);

    void print( );

    };

    Sample:

    Sample( _____________ )

    {

     x=a; y=x++;

    }

    void Sample:: print( )

    {

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

    }

    int Sample: : y =25;

    void main( )

    {

     Sample s1(5);

    Sample s2(10);

    s1. print( );

    s2. print( );

    }

  6. 完成程序,使其输出结果为79

    #include ﹤iostream. h﹥

    using namespace std;

    int main( )

    {

    int a[6]={23,15,64,33,40,58

    };

    _____________;

    s1=s2=a[0];

    for(int *p=a+1;

     p﹤a+6; p++)

     {

    if(s1﹥*p) s1=*p;

    if _____________;

    }

    cout ﹤﹤s1 +s2 ﹤﹤endl;

    return 0;

    }

  7. #include ﹤iostream. h﹥

    using namespace std;

    _____________;

    _____________;

    {

    T tmp =x*x+y*y+x*y;return tmp;

    }

    int main( )

    {

    int x1=1, y1 =4;

    float x2=1.1, y2=2.2;

    double x3=2.0, y3=3.1;

    cout﹤﹤fun(x1, y1)﹤﹤endl;

    cout ﹤﹤fun(x2, y2)﹤﹤endl;

    cout ﹤﹤fun(x3, y3)﹤﹤ endl;

    return 0;

    }

  8. 把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。

    #include ﹤iostream﹥

    #include ﹤fstream.h﹥

    #include ﹤stdlib. h﹥

    void main( )

    {

    ofstream fout("a: xxk1.dat");

    if( _____________ )

     {

    cout﹤﹤"文件没有打开!"﹤﹤end;

    exit(1);

    }

    int x;cin﹥﹥x;

    while(x! =-1)

    {

    fout ﹤﹤x﹤﹤' ';

    cin ﹥﹥x;

    }

    _____________; //关闭文件

    }

  9. 申请一个长度为10的int型空间,之后释放该空间。

    #include ﹤iostream. h﹥

    using namespace std;

    int main( )

    {

    int *p=new int[ 10];

    delete p;

    return 0;

    }

  10. #include ﹤iostream. h﹥

    using namespace std;

    class A

    {

    int x, y;public:void set(int a, int b)

    {

     x=a; y=b;

    }

    int getx( )

    {

    return x;

     }

    int gety( )

    {

    return y;

    }

    int sum( )

    {

    return x+y;

    }

    };int main( )

     {

    A a;a. set(3, 4);

    cout﹤﹤a.x﹤﹤a.y﹤﹤ a.sum( )﹤﹤ endl;

    return 0;

    }

  11. #include ﹤iostream.h﹥

    using namespace std;

    void setzero(int &a)

     {

    a=0;

     }

    int main( )

    {

    int x1=10;setzero(&x1);

    cout ﹤﹤x1﹤﹤ endl;

    return 0;

    }

  12. 改正后程序输出结果为2 5 8 11 14

    #include ﹤iostream. h﹥

    using namespace std;

    void main( )

    {

    int i=1;

    while(i﹤=15)

    {

    i++;if(i%3==2) continue;

    else cout ﹤﹤1﹤﹤" ";

    }

    }

  13. #include ﹤iostream. h﹥

    using namespace std;

    class Point

    {

    public:void init( ) {

     }

    static void output( ) {

     }

    };

    void main( )

    {

    Point P;

    Point:: init( );

    P. output( );

    }

  14. 拷贝构造函数使_________作为参数初始化创建中的对象。

  15. 假如一个类的名称为F,使用这个类的一个对象初始化该类的另一个对象时,可以调用_________构造函数来完成此功能。

  16. 用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参的或缺省参数的_________,否则应用程序会产生一个编译错误。

  17. C++中解决命名冲突的机制是_________。

  18. C++类中构造函数的个数最多是无限个,析构函数的个数最多是_________个。

  19. C++中一般的程序都要有两条语句,包含头文件“#include ﹤iostream﹥”语句和使用命名空间“_________”语句。

  20. C++的静态数据成员需要在_________进行初始化,可以被该类的所有对象共享。

  21. 描述命题“A小于8或小于C”的表达式为_________。

  22. C++中字符串"a+b=12\n\t"的长度为_________。

  23. 不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为_________。

  24. 假设类F的对象f是类A的成员对象,则“A a”语句执行时,先调用类_________的构造函数。

  25. 设"int a=3,b=4,C=5;",表达式“(a+b)﹥c&&b==c”的值是_________。

  26. C++中定义重载函数时,应至少使重载函数的参数个数或_________不同。

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

  28. Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是_________。

  29. C++中字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符_________。

  30. 具有至少一个纯虚函数的类是_________。

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

  32. 在_________继承的情况下,基类数据成员在派生类中的访问权限保持不变。

  33. 有关函数模板和模板函数说法错误的是(  )

    • A.函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数
    • B.模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行
    • C.函数模板需要实例化为模板函数后才能执行
    • D.当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用
  34. 对类的构造函数和析构函数描述正确的是(  )

    • A.构造函数可以重载,析构函数不能重载
    • B.构造函数不能重载,析构函数可以重载
    • C.构造函数可以重载,析构函数也可以重载
    • D.构造函数不能重载,析构函数也不能重载
  35. 将int类型指针p转换为char类型指针,则强制转换语句为_________。

  36. 下列关于运算符重载的叙述中,正确的是(  )

    • A.通过运算符重载,可以定义新的运算符
    • B.有的运算符只能作为成员函数重载
    • C.若重载运算符+,则相应的运算符函数名是+
    • D.重载一个二元运算符时,必须声明两个形参
  37. 当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为(  )

    • A.ios::out | ios::binary
    • B.ios::in | ios::binary
    • C.ios::out
    • D.ios::in
  38. 假定A为一个类,则执行“A a[3], b(3);”语句时调用该类构造函数的次数为(  )

    • A.3
    • B.4
    • C.5
    • D.9
  39. C++中定义标准输入输出的库为(  )

    • A.stdio
    • B.math
    • C.iostream
    • D.stdlib
  40. 允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返函值能取任意类型,这是一个(  )

    • A.类模板
    • B.模板类
    • C.函数模板
    • D.模板函数
  41. 如果有int型变量a,则定义指向变量a的指针p正确的写法是(  )

    • A.int p=&a
    • B.int * P=&a
    • C.int&p=*a
    • D.int*p = a
  42. 假定指针变量P定义为“int *P=new int(100);”,要释放P所指向的动态内存,应使用语句(  )

    • A.delete p;
    • B.delete* p;
    • C.delete&p;
    • D.delete[ ]p;
  43. 下列对派生类的描述中,错误的是(  )

    • A.一个派生类可以作为另一个派生类的基类
    • B.派生类至少有一个基类
    • C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
    • D.派生类中继承的基类成员的访问权限到派生类保持不变
  44. 下列函数原型声明语句中,错误的是(  )

    • A.int f(void);
    • B.void f(hat);
    • C.int f(a);
    • D.void f(double a);
  45. 下列对静态成员的描述中,不正确的是(  )

    • A.静态成员不属于对象,是类的共享成员
    • B.静态数据成员要在类外定义和初始化
    • C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
    • D.非静态成员函数也可以操作静态数据成员
  46. C++中要实现动态联编,调用虚函数时必须使用(  )

    • A.基类指针
    • B.类名
    • C.派生类指针
    • D.对象名
  47. 以下类模板定义正确的为(  )

    • A.template﹤class T﹥
    • B.template﹤class T, class int i﹥
    • C.template﹤class T, typename T﹥
    • D.template﹤class T1,T2﹥
  48. 下列虚基类的声明中,正确的是(  )

    • A.class virtual B:public A
    • B.class B:virtual public A
    • C.class B:public A virtual
    • D.virtual class B:public A
  49. 下列哪个类型函数不适合声明为内联函数(  )

    • A.函数体语句较多
    • B.函数体语句较少
    • C.函数执行时间较短
    • D.函数被频繁调用
  50. 以下说法中正确的是(  )

    • A.C++程序总是从第一个定义的函数开始执行
    • B.C++程序总是从main函数开始执行
    • C.C++中函数必须有返回值
    • D.C++中函数名必须唯一
  51. 设x和y均为bool量,则x&&y为真的条件是(  )

    • A.它们均为真
    • B.其中一个为真
    • C.它们均为假
    • D.其中一个为假
  52. 拷贝构造函数应该是(  )

    • A.不带参数的构造函数
    • B.带有一个参数的构造函数
    • C.带有两个参数的构造函数
    • D.缺省构造函数
  53. 若有以下类型标识符定义:char c='c'; int a=4; float f=3.14; double d=1.212; 则表达式C+a/(int)d+f的结果类型是(  )

    • A.float
    • B.char
    • C.int
    • D.double