一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 已知一个student类,包括学姓名,成绩和等级,不含任何成员函数,process为学生信息处理类。

    class student{

    char name[10];

    int deg;

    char level[7];

    friend class process:

    public:

    student(char na[ ],int d){strcpy(name,na);deg=d;}

    } ;

    class process{

    public:

    void trans(student s[ ]){…} //根据学生成绩计算学生等级(优大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分)

    void disp(student s[ ]){…} //根据成绩降序打印所有学生信息

    };

    要求实现process类中的两个函数:

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

    #include ﹤iostream.h﹥

    class A{

    private:

    friend class B;

    A(int val=0):data(val),use(1){ }

    int use,data;

    };

    class B{

    public:

    A*pa;

    B(int val=0):pa(new A(val)){ }

    ~B( ){if( -- pa -﹥use==0)delete pa;}

    B(B&rhs){ ++ rhs -﹥use;pa=rhs.pa;}

    B&operator=(B&rhs);

    A*operator -﹥( ){return pa;}

    void Display( ){

    cout﹤﹤"data="﹤﹤pa -﹥data﹤﹤",use="﹤﹤pa -﹥use﹤﹤endl;

    }

    };

    B&B::operator=(B&rhs)

    {

    if(this ==&rhs)return*this;

    if( -- pa -﹥use = =0)delete pa;

    ++ rhs -﹥use;

    pa=rhs.pa;

    return * this;

    }

    int main( ){

    B b1(1),b2(b1),b3(3);

    b1.Display( );

    b2.Display( );

    b3.Display( );

    b3=b1;

    b1.Display( );

    b3.Display( );

    return 0;

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

    #include ﹤iostream.h﹥

    class Sample

    {

    int n;

    static int sum;

    public:

    Sample(int x){n=x;}

    void add( ){sum+=n;}

    void disp( )

    {

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

    }

    };

    int Sample::sum=0;

    void main( )

    {

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

    a.add( );

    a.disp( );

    b.add( );

    b.disp( );

    c.add( );

    c.disp( );

    }

  4. 给出下面程序的输出结果

    #include ﹤iostream.h﹥

    class example

    {

    int a;

    public:

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

    void print( ){a=a+1;cout﹤﹤a﹤﹤" ";}

    void print( )const{cout﹤﹤a﹤﹤"";}

    };

    void main( )

    {

    example x(3);

    const example y(2);

    x.print( );

    y.print( );

    }

  5. 给出下面程序的输出结果

    #include ﹤iostream.h﹥

    class Sample

    {

    int x,y;

    public:

    Sample( ){x=y=0;}

    Sample(int a,int b){x=a;y=b;}

    ~Sample( )

    {

    if(x==y)

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

    else

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

    }

    void disp( )

    {

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

    }

    };

    void main( )

    {

    Sample s1(2,3);

    s1.disp( );

    }

  6. 输入一个字符串,将其逆序后输出。

    #include ﹤iostream﹥

    using namespace std;

    void main( )

    {

    char a[50];memset(a,0,sizeof(a));

    int i=0,j;

    char t;

    cin.getline(a,50,'\n';

    for(i=0, j=strlen(a)-1;i﹤_________;i++, j-- )

    {

    t=a[i];

    a[j]=t;

    }

    cout﹤﹤a﹤﹤endl;

    }

  7. 在下划线处填上适当的句子,完成函数的定义。

    #include ﹤iostream.h﹥

    class Sample

    {

    int x;

    public:

    Sample( ){ };

    _________{x=a;}

    _________{x=a.x+++10;}

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

    };

    void main( )

    {

    Sample s1(2),s2(s1);

    s1.disp( );

    s2.disp( );

    }

  8. 在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。  x=2,y=3

    #include ﹤iostream.h﹥

    class Sample

    {

    int x,y;

    public:

    Sample( ){

    x=y=0;

    }

    Sample(int a,int b){

    x=a;

    (__________)

    }

    void disp( )

    {

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

    }

    }(____­_______)

    void main( )

    {

    Sample s(2,3), *p=&s;

    p-﹥disp( );

    }

  9. 在下划线处填上适当的语句,使程序的输出结果如下:  1 2 3 4 5 6 7 8 9 10  #include ﹤iostream.h﹥

    class Sample

    {

    int A[10][10];

    public:

    int &operator( )(int,int);

    };

    int &Sample::operator( )(int x,int y)

    {

    return A[x][y];

    }

    void main( )

    {

    Sample a;

    int i, j;

    _________

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

    _________

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

    cout﹤﹤a(i, 1)﹤﹤ " ";

    cout﹤﹤endl;

    }

  10. 在下划线处填上适当的语句,使程序的输出结果如下:  n=30

    #include ﹤ iostream.h ﹥

    template﹤ class T ﹥

    class Sample

    {

    T n;

    public:

    Sample( ){ }

    Sample(T i){_________}

    Sample﹤T﹥&operator+(const Sample﹤T﹥&);

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

    };

    template﹤class T﹥

    Sample﹤T﹥&Sample﹤T﹥::operator+(const Sample﹤T﹥&s)

    {

    static Sample﹤T﹥temp;  return temp;

    }

    void main( )

    {

    Sample﹤int﹥s1(10),s2(20),s3;

    s3=s1+s2;

    s3.disp( );

    }

  11. #include ﹤iostream.h﹥

    class point{

    int x;

    public: void init(int a){x=a;}

    int getx( ){return x;}

    void setx(int a){x=a;}

    };

    main( ){

    point a;

    a.init(20,30);

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

    }

  12. template﹤class T﹥

    T f(T x){

    T y;

    y=x+T;

    return y;

    }

  13. #include ﹤iostream.h﹥

    main( ){

    int x=8,y=6;

    const int*const p=&x;

    p=&y;

    cout﹤﹤* p﹤﹤endl;

    }

  14. #include ﹤iostream.h﹥

    main( ){

    folat p;

    p=new folat[5];

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

    {cin﹥﹥ * (p+i);cout﹤﹤ * (p+i)﹤﹤endl;}  delete p;

    }

  15. #include ﹤iostream.h﹥

    main( ){

    int x=9,y=8,z=7;

    const int * p=z;

    cout﹤﹤ * p﹤﹤endl;

    }

  16. 在C++标准输出方式中,要设置输出数据字段宽度width所使用的操控符是______。

  17. 设有定义int x; float y;,则10+x+y值的数据类型是______。

  18. C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是引进了______概念。

  19. ______指令定义一个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。

  20. C++使用流进行输入输出,其中能捕获键盘输入的对象是______。

  21. 函数重载可使一个函数名具有多种功能,称这种特性为______。

  22. 在vector类中删除向量中最后一个对象的方法是______。

  23. 在私有派生中,基类的权限为private的成员,在派生类中______。

  24. C++总共有3种文件流,分别是输入文件流、输出文件流和______。

  25. C++中istream类的直接基类是______。

  26. 执行下列代码  double pi=3.141592  cout﹤﹤setprecision(2)﹤﹤pi; 程序的输出结果是______。

  27. 要关闭一个文件输出流对象myFile,所用的C++语句是______。

  28. vector类中用于获取存放的元素个数的方法是______。

  29. 构造函数不能被继承,一个派生类只能调用它的______基类的构造函数。

  30. C++中规定模板以______关键字和一个形参表示开头。

  31. 在C++中除具有______语句和switch语句的函数外,其它函数都可以说明为内联函数。

  32. C++函数中按引用调用传递参数时使用______作为参数。

  33. 若要使用标准输入流机制从键盘输入一个整数赋给整型变量a,相应的C++语句是______。

  34. UML中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的,称之为______。

  35. 公共派生中,基类的公有成员在派生类中是______。

  36. 对引用调用描述正确的是(  )

    • A.分配新存储空间
    • B.修改已存储空间的名称为引用名
    • C.引用名与已存在存储空间无任何关联
    • D.将引用名标识符与一块已存在储区域相关联,没有分配新存储空间
  37. 使用下列哪个格式控制符可设置转换十六进制为十进制(  )

    • A.dec
    • B.oct
    • C.hex
    • D.endl
  38. 运算符delete与哪个函数一起运行(  )

    • A.构造函数
    • B.析构函数
    • C.主函数
    • D.不与任何函数一起工作
  39. 一个类可以获得另一个类的特性的机制称为(  )

    • A.抽象
    • B.封装
    • C.继承
    • D.多态性
  40. 对于多重继承,下列描述正确的是(  )

    • A.所有基类使用相同的派生方式
    • B.每个基类可使用不同派生方式
    • C.只能是public派生
    • D.只能是protected派生
  41. 下列关于类的权限描述错误的是(  )

    • A.类本身的成员函数可以访问自身的任何成员
    • B.类的对象可以访问该类的所有成员
    • C.普通函数不能直接访问类的公有成员,必须通过成员函数对其访问
    • D.一个类可以将另一个类的对象作为成员
  42. 用于标识八进制常量的前缀或后缀是(  )

    • A.无
    • B.后缀L或l
    • C.前缀零
    • D.前缀0x
  43. 派生类中继承的基类成员初始化如何进行(  )

    • A.由派生类构造函数调用基类的构造函数进行
    • B.由派生类构造函数进行
    • C.由基类构造函数进行,无需派生类构造函数调用
    • D.以上皆不正确
  44. 设存在数组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);
  45. 关于对象的性质,下列描述错误的是(  )

    • A.同一类对象之间可相互赋值
    • B.不能使用对象数组
    • C.对象可以用作函数参数
    • D.一个对象可以用作另一个类的成员
  46. 类的私有成员可在哪里被赋值(  )

    • A.类体中
    • B.该类的成员函数中
    • C.A和B
    • D.以上都不是
  47. 下列对于类的描述错误的是(  )

    • A.类要先声明后使用
    • B.类是具有唯一标识的实体
    • C.两个类可以使用同一个名称
    • D.组成类的不仅有数据,还可以有对数据进行操作的函数
  48. 使用引用调用方式将实参传给形参,下列说法正确的是(  )

    • A.形参是实参的备份
    • B.实参是形参的备份
    • C.形参和实参共享同一对象
    • D.形参和实参无联系
  49. 下列哪个要素不是面向对象的关键要素(  )

    • A.模块化
    • B.抽象性
    • C.封装性
    • D.继承性
  50. 在编译指令中,嵌入指令是指(  )

    • A.#include
    • B.#define
    • C.#if
    • D.#else
  51. 设存在数组a,其长度为Len,下列哪项操作是将a中元素复制到数组b中(  )

    • A.reverse(a+a,Len,b);
    • B.sort(a,a+Len,b);
    • C.find(a,a+Len,b);
    • D.copy(a,a+Len,b);
  52. 一个类可拥有多少个构造函数(  )

    • A.0个
    • B.1个
    • C.1或多个
    • D.以上皆对
  53. 设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式正确的是(  )

    • A.int m=max(22,max(59,70));
    • B.int m=max(max(22,59),max(59,70));
    • C.int m=max(max(22,70),59);
    • D.以上皆正确
  54. 不同对象调用同一成员函数时,this指针指向(  )

    • A.不同对象
    • B.相同对象
    • C.无对象
    • D.不确定
  55. 如声明对象数组,则下列描述正确的是(  )

    • A.对每个元素均调用一次构造函数
    • B.部分元素调用构造函数,其它元素不需调用
    • C.均不需要调用构造函数
    • D.只是首元素调用构造函数