一起答

自考C++程序设计模拟试题及答案(九)

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

    状的抽象类声明如下:

    class Shape{

    public:

     virtual double Area( )=0;

    };

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

    #include

    int min(int a,int b)

    {if(a

    else return b;

    return 0;

    }

    void main()

    {cout<

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

    #include< iostream.h>

    class example

    {int a;

    public:

    example(int b=5){a=b++;}

    void print(){a=a+1;cout<

    void print()const

    {cout<

    };

    void main()

    {example x;

    const example y(2);

    x.print();

    y.print();

    }

  4. 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字

    符串。

    #include

    using namespace std;

    void copystr(_________)

    {int n=0;

    while(n

    {n++;

    P1++;

    }

    while(*p1!='\0')

    {*p2=*p1;

    p1++;

    p2++;

    }

    *p2=’\0’;

    }

    void main()

    {int m;

    char strl[20],str2[20];

    cout<"输入字符串1:";

    ____________

    cout<<从第m个字符开始复制,请输入m:”;

    cin>>m:

    if(strlen(strl)

    cout<<"输入超过str1的长度"<

    else

    {copystr(str1,str2,m);

    cout<<"复制的字符串是:"<

    }

    }

  5. 在下面程序横线处填上适当的语句,使其输出结果为0,15,15。

    #include

    class base

    {public:

    __________f(){return 0;}

    };

    class derived:public base

    {public:

    int a,b,c;

    __________set(int x,int y,int z){a=x;b=y;c=z;}

    int f(){return a+b+c;}

    };

    void main()

    {base b;

    derived d;

    cout<

    d.set(3,5,7);

    cout<

    base &p=d;

    cout<

    }

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

    #include

    class vehicle

    {protected:

    int size;

    int speed;

    public:

    void set( int s){speed =s;}

    _________get(){return speed/10;}

    };

    class car:public vehicle

    {public:

    int get(){return speed;}

    };

    class truck:public vehicle

    {public:

    int get(){return speed;}

    };

    class car:public vehicle

    {public:

    int get(){return speed/2;}

    };

    int max(_________)

    return 1;

    else

    return 2;

    }

    void main()

    {truck t;

    car c;

    t.set(160);

    c.set(80);

    cout<

    }

  7. 在下面程序的横线处填上适当内容,以使该程序执行结果为:50 4 34 21 10 0  7.1  8.1  9.1  10.1  11.1

    #include

    template

    void f(____________)

    {____________

    for(int i=0;i

    {t=a[i];a[i]=a[n-1-i;a[n-1-i]=t;}

    void main()

    {int a[5]=10,21,34,4,50};

    double[6]=11.1,10.1,9.1,8.1,7.1};

    f(a,5);f(d,6);

    for (int i=0;i<5;i++)

    cout<

    cout<

    for(i=0;i<6;i++)

    cout<

    cout< endl;

    }

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

    #include

    template

    class f

    {private:

    T x,y,s;

    public:

    f(T a=0,T b=0){x=a;y=b;}

    void sum()

    {s=x+y;

    T gets();

    };

    template

    ____________

    {

    return s;

    }

    void main()

    {____________a(1.5,3.8);

    cout<

    }

  9. 运行程序,从键盘上输入“This is a C++ prog!”后输出到一个文件中,并显示在屏幕上,显示结果:This is a C++ prog!。

    #include

    #include

    #include

    using namespace std;

    void main()

    {char str[20];

    ofstream outf("D:\tem.dat", ios::trunc);

    Cin>>str;

    outf<

    Outf.close();

    int i=0;

    while(str[i]! ='\0')

    {cout<

    i++;

    }

    cout<

    }

  10. #include

    class B

    {int a,b

    const int c;

    Public;

    B(int i=0,int j=0){a=i;b=j;c=i-j;}

    };

    void main()

    {B a,b(3,5);

    B x=a,z(5,9);

    }

  11. #include

    class A

    {public:

    void f()cout<<"a.f()<

    };

    class B

    {public:

    void f()cout<<"b、f()"<

    void g(cout<<"b、g()"<

    };

    class C:public A,public B

    {private:

    int b;

    public:

    void g(){cout<<"c.g()"<

    };

    void main()

    {C obj;

    Obj.f()

    Obj.g()

    }

  12. #include< iostream.h>

    class A

    {private:

    int x;

    public:

    A(int i){x=i;}

    A(){x=0;}

    friend int min(A&,A&);

    };

    int min(A &a, A &b)

    {retum(a.x

    }

    void main()

    {A a(3),b(5);

    cout<

    }

  13. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字________。

  14. #include

    #include

    using namespace std;

    template

    T Max(Ta,Tb)

    {return ab?a:b;}

    TMin(Ta,Tb)

    {return>b?b:a;}

    void main()

    {cout<<"Max(3,5)is:"<(3,5)<

    cout<<"Min(3,5)is:"<(3,5)<

    }

  15. 派生类可以定义其_______中不具备的数据和操作。

  16. 设函数sum是由函数模板实现的,并且sum(3,6)和sum(4,6,8)都是正确的函数调用,则函数模板具有_________个类型参数。

  17. 设A为test类的对象且赋有初值,则语句test(A);表示_______。

  18. _______指令指示编译器将一个源文件嵌入到带该指令的源文件之中。

  19. C++结构体中的成员默认访问权限为_______。

  20. 派生类继承基类的虚函数后_______不重新定义该函数。

  21. 函数fun的返回值是一个整型数据的引用,有两个参数都是int,声明fun函数的原型是_______。

  22. 在C++中,可将多态性分为:编译时的多态性和_______。

  23. 在面向对象的程序设计中,将一组对象的共同特性抽象出来形成_________。

  24. C++中有两种继承方式:单一继承和__________。

  25. 目前,有两种重要的程序设计方法,分别是结构化程序设计和_______程序设计。

  26. 继承的方式有公有继承,私有继承和_________。

  27. 在单一继承和多重继承方式中,面向对象程序设计应尽量使用_________继承。

  28. 为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常为该类定义_________。

  29. 假设int a=1,b=2;,则表达式(++a/b)*b--的值为_________。

  30. 用_______修饰的函数称为虚函数。

  31. 若要使用string类,需要引入的头文件是_________。

  32. 若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的__________语句。

  33. A是一个类,已有语句“A*p;p=new A[10];”,要释放由p指向的动态空间,正确的语句应该是__________。

  34. 在C++中使用流进行输入输出,其中用于键盘输入的对象是()

    • A.cerr
    • B.cin
    • C.cout
    • D.cfile
  35. 下列选项中不是C++语言关键字的是()

    • A.typedef
    • B.mycase
    • C.typeid
    • D.typename
  36. 面向对象程序设计语言必须具备的关键要素是()

    • A.抽象和封装
    • B.抽象和多态性
    • C.抽象、封装、继承和多态性
    • D.抽象、封装和继承性
  37. 下列运算符在C++中不能重载的是()

    • A.?:
    • B.[]
    • C.>
    • D.&
  38. C++程序的执行总是从()开始的。

    • A.main函数
    • B.第一行
    • C.头文件
    • D.函数注释
  39. 设intx=56;intr=x;若cout<<&x;显示0012FF7A,则cout<<&ar;输出值为()

    • A.56
    • B.0012FF7A
    • C.0012FF7B
    • D.未知
  40. 下列描述中,不属于面向对象思想主要特征的是()

    • A.封装性
    • B.跨平台性
    • C.继承性
    • D.多态性
  41. 下面属于重载函数的有() 

    • a.void f(int x)(...) 
    • b.int f(int y)(...)
    • c.int f(int i,int j)(...)
    • d.float k(int x)(...)
    • A.4个全部
    • B.a和d
    • C.b和c
    • D.c和d
  42. 在C++的流类库预定义的缓冲方式下,与标准错误输出设备相联接的是()

    • A.cin
    • B.cout
    • C.cerr
    • D.clog
  43. 下列关于类和对象的说法不正确的是()

    • A.对象是类的一个实例
    • B.一个类只能有一个对象
    • C.一个类只能有一个名字
    • D.类和对象的关系与数据类型和变量的关系相似
  44. 关于抽象类,下列表述中正确的是()

    • A.抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)
    • B.派生类必须实现作为基类的抽象类中的纯虚函数
    • C.派生类不可能成为抽象类
    • D.抽象类不能用来定义对象
  45. 要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()

    • A.const char*p="ABCD";
    • B.char*const p="ABCD";
    • C.char const*p="ABCD";
    • D.const char*const p="ABCD";
  46. 假定一个类的构造函数为A(intaa,intbb)=aa++;b=a*++bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为()

    • A.4和5
    • B.4和20
    • C.4和24
    • D.20和5
  47. 有关多态性说法不正确的是()

    • A.C++语言的多态性分为编译时的多态性和运行时的多态性
    • B.编译时的多态性可通过函数重载实现
    • C.运行时的多态性可通过模板和虚函数实现
    • D.实现运行时多态性的机制称为动态多态性
  48. 用于标识十六进制前缀或后缀的是()

    • A.无
    • B.后缀L或e
    • C.前缀零
    • D.前缀0x
  49. C++允许在结构中定义函数,这些函数称为()

    • A.静态函数
    • B.构造函数
    • C.析构函数
    • D.成员函数
  50. 下列访问公有静态成员的方式,错误的是()

    • A.类名::静态成员名
    • B.对象名.静态成员名
    • C.对象指针->静态成员名
    • D.对象指针.静态成员名
  51. 下列选项中,与实现运行时多态性无关的是()

    • A.函数重载
    • B.虚函数
    • C.指针
    • D.引用
  52. 存在定义int a[10],x,*pa;,若pa=&a[0],下列的四个选项中有一个和其他3个选项不是等价的为()

    • A.x=*pa;
    • B.x=*(a+1);
    • C.x=*(pa+1);
    • D.x=a[1];
  53. 在派生类中重新定义虚函数时必须与基类保持一致的是()

    • A.参数类型
    • B.形参名
    • C.操作内容
    • D.赋值