一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin( )(处理存入账),bankout( )(处理取出账)和disp( )(输出明细账)请完成函数的实现。  本题程序如下:  #include ﹤stdio.h﹥

    #include ﹤string.h﹥

    #define Max 100

    class Bank

    {

    int top;

    char date[Max][10]; //日期

    int money[Max]; //金额

    int rest[Max]; //余额

    static int sum; //累计余额

    public:

    Bank( ){top=0;}

    void bankin(char d[ ],int m){…}

    void bankout(char d[ ],int m){…}

    void disp( ){…};

    } ;

  2. 写出此程序的执行结果:

    #include ﹤iostream.h﹥

    template﹤class T﹥

    T func(T x,T y){

    if(sizeof(T)==8)

    return x+y;

    else

    return x*y;

    }

    void main( ){

    cout ﹤﹤func(8,5)﹤﹤":"﹤﹤func(5.0,10.0)﹤﹤endl;

    int d; cin﹥﹥d;

    }

  3. 下面程序中A是抽象类,其输出是什么?

    #include ﹤iostream.h﹥

    class A{

    public:

    virtual void printMe( ){cout﹤﹤"This is class A printing. "﹤﹤endl;};

    } ;

    class B: public A{

    public:

    void printMe( ) {cout ﹤﹤ "This is class B printing. "﹤﹤endl;}

    } ;

    class C: public B{

    public:

    void printMe( ) {cout ﹤﹤"This is class C printing. "﹤﹤endl;}

    } ;

    void print(A a)

    {

    a.printMe( );

    }

    void main( )

    {

    B b;

    C c;

    print(b); print(c);

    }

  4. 在下面程序中的横线处填上适当内容,使程序完整

    #include﹤iostream.h﹥

    _________

    class A

    {

    int i;

    public:

    int set(B&);

    int get( ){return i;}

    A(int x){i=x;}

    } ;

    class B

    {

    int i;

    public:

    B(int x){i=x;}

    _________ A;

    } ;

    int A:: set(B&b)

    {

    return i=b.i;

    }

    void main( )

    {

    A a(1);

    B b(2);

    cout﹤﹤a.get( )﹤﹤",";

    a.set(b);

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

    }

  5. 在下面程序横线处填上适当内容,使程序执行结果为:  n=2,sum=2  n=3,sum=5  n=5,sum=10  程序如下:

    #include ﹤iostream.h﹥

    class Test

    {

    int n;

    static int sum;

    public:

    Test(int x){n=x;}

    void add( ){_________;}

    void disp( )

    {

    cout﹤﹤{"n="﹤﹤n﹤﹤",sum="﹤﹤sum﹤﹤endl;

    }

    } ;

    int _________=0;

    void main( )

    {

    Test a(2),b(3),c(5);

    a.add( );

    a.disp( );

    b.add( );

    b.disp( );

    c.add( );

    c.disp( );

    }

  6. 在下面程序横线处填上适当内容,使程序执行结果为:  n=30  程序如下:  #include ﹤iostream.h﹥

    template ﹤class T﹥

    class Test

    {

    T n;

    public:

    Test( ){ }

    Test(T i){n=i;}

    Test﹤T﹥_________(const Test﹤T﹥&s)

    {

    static Test﹤T﹥temp;

    _________;

    return temp;

    }

    void disp( ){cout﹤﹤"n="﹤﹤n﹤﹤endl;}

    } ;

    void main( )

    {

    Test ﹤int﹥t1(4),t2(5),t3;

    t3=t1+t2;

    t3.disp( );

    }

  7. 在下面程序横线处填上适当内容,使程序执行结果为:40:15  程序如下:  #include ﹤iostream.h﹥

    template ﹤class T﹥

    T func(T x,T y){

    if(sizeof(T)==8)

    return _________;

    else

    return _________;

    }

    void main( ){

    cout ﹤﹤func(8, 5)﹤﹤":"﹤﹤func(5.0, 10.0)﹤﹤endl;

    int d; cin ﹥﹥d;

    }

  8. 在下面程序横线处填上适当内容,使程序执行结果为:  x=0,y=0  x=1,y=2  x=10,y=20  程序如下:

    #include ﹤iostream.h﹥

    class Sample

    {

    int x, y;

    public:

    Sample( ){_________}

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

    void disp( )

    {

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

    }

    };

    void main( )

    {

    Sample s1, s2(1, 2), s3(10, 20);

    Sample *pa[3]={&s1, &s2, &s3};

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

    pa[i]-﹥disp( );

    }

  9. #include﹤iostream.h﹥

    class Student{

    int x=0,y=0;

    public:

    Student( ){

    x=1;  y=1;

    }

    Student(int a,int b){

    x=a;

    y=b;

    }

    void get( ){

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

    }

    } ;

    int main( ){

    Student student(5,6);

    student.get( );

    }

  10. #include ﹤iostream.h﹥

    class Base{

    public:virtual void fun( )=0;

    } ;

    class Test:public Base{

    public:virtual void fun( ){cout﹤﹤"Test.fun="﹤﹤endl;}

    } ;

    void main( ){

    Base a;

    Test *p; p=&a;

    }

  11. #include﹤iostream.h﹥

    class People{

    public:

    void People( ){ }

    const int age( )const{return 15;}

    char * name( ){return"Green";}

    } ;

    void main( )

    {

    const People s;

    int i=s.age( );

    cout﹤﹤"age="﹤﹤i﹤endl;

    }

  12. #include﹤iostream.h﹥

    class A{

    public: void show( ){cout﹤﹤"class A show"﹤﹤endl;}

    } ;

    class B{

    public: void show( ){cout﹤﹤"class B show"﹤﹤endl;}

    } ;

    class C: public A,public B{

    public: void print( ){cout﹤﹤"class C print"﹤﹤endl;}

    } ;

    void main( ){

    C c;

    c.show( );

    c.print( );

    }

  13. #include ﹤iostream.h﹥

    template ﹤class T﹥

    T minx(T x,T y){

    if(x﹥y)

    x=y;

    return x;

    }

    void main( )

    {

    int a;

    double d;

    cout﹤﹤minx(a,d)﹤﹤endl;

    }

  14. 一旦基类定义了虚函数,该基类的派生类中的_________也自动成为虚函数。

  15. 在C++类中,有一种类不能生成对象只能被继承,称之为_________。

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

  17. 假定类A有一个公有属性的静态数据成员b,在类外不通过对象名访问b的写法是_________。

  18. 执行cout﹤﹤char('a'+2)﹤﹤endl; 后的显示结果为_________。

  19. 简单成员函数是指声明中不含const,volatile,_________关键字的函数。

  20. 在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。

  21. C++中函数参数有两种传递方式:传值和_________。

  22. 在C++当中,类外的函数只能通过类的对象使用该类的_________。

  23. C++标准库string类中用于在主串中检索所需字符串的成员函数是_________。

  24. C++面向对象程序设计的特点为:抽象,封装,继承和_________。

  25. 如果一个函数直接或间接地调用自身,这样的调用称为_________调用。

  26. C++的类成员由数据成员和_________组成。

  27. 使用C++编译器对C++源程序进行编译产生文件的扩展名是_________。

  28. 常量成员包括常量数据成员,静态常数成员,和_________。

  29. 通过C++语言中的_________机制,可以从现存类中构建其子类。

  30. 执行代码double pi=3.141592;cout﹤﹤pi; 程序的输出结果是_________。

  31. 在文件输入流类中,用于判断提取操作是否已达到文件尾的方法是_________。

  32. 类所声明的内容用_________括起来,之间的内容称为类体。

  33. 在int a=3, *p=&a; 中,*p的值是(  )

    • A.变量a的地址值
    • B.无意义
    • C.变量p的地址值
    • D.3
  34. 默认参数是在_________中说明的,默认参数可以多于1个,但是必须放在参数序列的后部。

  35. 对指针动态分配空间用的关键字是(  )

    • A.define
    • B.int
    • C.new
    • D.float
  36. 一个函数功能不太复杂,但要求被频繁调用,应选用(  )

    • A.内联函数
    • B.重载函数
    • C.递归函数
    • D.嵌套函数
  37. 可用作C++语言用户标识符的一组标识符是(  )

    • A.void,define,+WORD
    • B.a3_b3,_123,YN
    • C.for,-abc,Case
    • D.2a,DO,sizeof
  38. 关于对象性质,下列描述错误的是(  )

    • A.同一类对象之间不可相互赋值
    • B.可以使用对象数组
    • C.对象可以用作函数参数
    • D.一个对象可以用作另一个类的成员
  39. 设函数int& index(int a,int i)返回数组a中下标为i的元素,如果在整型数组int array[ ]={1,2,3},在执行index(array, 1)+=3后,array中各元素值为(  )

    • A.{4,2,3}
    • B.{1,5,3}
    • C.{1,2,6}
    • D.{4,5,6}
  40. 对函数int saveName(char * first, char * sec=" ",char * thd=" ")下列调用方法不正确的是(  )

    • A.int s=saveName("1","2","3");
    • B.int s=saveName("1","2");
    • C.int s=saveName("1");
    • D.int s=saveName("1",,"3");
  41. 下列哪个不是函数重载需要满足的条件(  )

    • A.返回值类型不同
    • B.参数个数不同
    • C.参数个数相同时,参数类型不同
    • D.函数名相同
  42. 设存在数组a,其长度为Len,则下列哪个泛型算法用于对a进行升幂排序(  )

    • A.reverse(a, a+Len);
    • B.sort(a, a+Len);
    • C.find(a, a+Len, value);
    • D.copy(a, a+Len, b);
  43. 设类A中包含若干其他类的对象作为成员,则在定义类A的构造函数时,应使用下列哪个符号将A:: A(参数表)与成员初始化列表隔开(  )

    • A.,
    • B.;
    • C.:
    • D..
  44. 函数int sum(int a=10, int b=15, int c=25);不可与下列哪个函数同时声明(  )

    • A.int sum(int, int, int, int)
    • B.int sum(int, int, int)
    • C.int sum(double)
    • D.int sum(double, double, double);
  45. 在派生中,访问控制方式没有下列哪种(  )

    • A.publish
    • B.public
    • C.protected
    • D.private
  46. 采用重载函数的目的是(  )

    • A.实现共享
    • B.减少空间
    • C.提高速度
    • D.使用方便,提高可读性
  47. 类不是内存中的物理实体,只有当使用类产生对象时,才进行内存分配,这种对象建立的过程称为(  )

    • A.程序化
    • B.结构化
    • C.过程化
    • D.实例化
  48. 下列关于类的权限描述错误的是(  )

    • A.类本身的成员函数可以访问自己定义的任何成员
    • B.类的对象只能访问公有成员
    • C.普通函数只能通过对象访问类的公有成员
    • D.一个类不能包含另一个类的对象作为成员
  49. 对于类中的成员,使用protected修饰,表明该成员的访问权限是(  )

    • A.公有的
    • B.私有的
    • C.保护的
    • D.不可见的
  50. 运算符:: 叫做(  )

    • A.下标运算符
    • B.自增运算符
    • C.成员访问运算符
    • D.作用域运算符
  51. 如果为一个类定义了自己的构造函数,下列描述正确的是(  )

    • A.系统不再提供默认构造函数,但提供其他构造函数
    • B.系统提供其他非默认构造函数
    • C.系统不再提供默认构造函数
    • D.系统仍提供默认构造函数
  52. 下列表达式,哪一是声明p为指向常量的指针(  )

    • A.const int *p;
    • B.int* const p;
    • C.const int *const p;
    • D.int *p;
  53. 使用下列哪一限定符可强制改变访问方式(  )

    • A.const
    • B.short
    • C.long
    • D.signed