一起答

2013年9月全国计算机等级《二级C++》命题预测试卷三

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类

    的定义补充完整,使得程序的输出结果为21。

    (1)增加静态私有变量Num,类型为int,请在注释1后添加适当的语句。

    (2)增加静态变量Num并初始化为10,请在注释2后添加适当的语句。

    (3)完成静态函数get的定义,请在注释3后添加适当的语句。

    (4)完成对象obj对静态函数get的调用,使得输出结果

    为21,请在注释4后添加适当的语句。

    注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。

    试题程序:

    #include

    classTC

    {

    //********1********

    intOwn;

    public:

    TC(inti)

    {

    wn=i;

    }

    //********2********

    {

    returnNum+obj->Own;

    }

    };

    //********3********

    intmain()

    {

    TCobj(11);

    //********4********

    cout<<<

    return0;

    }

  2. 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错.请改正其中的错误,使程序正常运行,并使程序输出的结果为

    Maxis7

    提示:max函数用于找出两个数中的最大值,并作为函

    数值返回。

    注意:错误的语句在//******error******的下面,修改该语句即可。

    试题程序:

    #include

    usingnamespacestd;

    //******error******

    intmax(inta,intb)

    {

    if(a{

    intt=a;

    a=b:

    b=t;

    }

    returnb;

    }

    intmain

    {

    intm=-3:

    intn=7:

    //******error******

    max(-3,n);

    cout<<"Maxis"<

    return0;

    }

  3. 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法对数组数据进行排序。所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组变成有序的,并且按由大到小排序。

    注意:不能修改和删除程序的其他部分,也不能修改程序的结构。

    试题程序:

    #include

    #defineN10

    voidsort(intA[N],intn)

    {

    }

    intmain

    {

    intA[N]={1,50,17,69,87,42,90,-6,O,-11};

    sort(A,10);

    for(inti=0;i

    {

    cout<}

    cout<

    return0;

    }

  4. 下列有关数据库的叙述,正确的是(  )。

    • A.数据处理是将信息转化为数据的过程
    • B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
    • C.关系中的每一列称为元组,一个元组就是一个字段
    • D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
  5. 下面有关重载函数的描述中正确的是(  )。

    • A.重载函数必须具有不同的返回值类型
    • B.重载函数形参个数必须不同
    • C.重载函数必须具有不同的形参列表
    • D.重载函数名可以不同
  6. 有如下程序:

    #included

    usingnamespacestd;

    classTestClass{

    protected:

    TestClass(  ){cout<<'X';}

    TestClass(charc){cout<

    classTestClassl:publicTestClass{

    public:

    TestClassl(charc){cout<

    intmain(  ){

    TestClassld1('y');

    return0;}

    执行这个程序,屏幕上将显示输出(  )。

    • A.y
    • B.yx
    • C.xy
    • D.yy
  7. 下列字符串中可以用作C++语言标识符的是(  )。

    • A.1234
    • B.foo~~bar
    • C.virtual
    • D.34var
  8. 下面程序的运行结果是(  )。

    #include

    classbase{

    protected:

    inta;

    public:

    base(){cout<<"0";}

    };

    classbasel:virtualbase{

    public:

    basel(){cout<<"1";}

    };

    classbase2:virtualbase{

    public:

    base2(){cout<<"2";}

    };

    classderived:publicbasel,publicbase2{

    public:

    derived(){cout<<"3";}

    };

    voidmain()

    {

    derivedobj;

    eout<

    }

    • A.0123
    • B.3120
    • C.O312
    • D.3012
  9. 设有如下三个关系表:

    下列操作中正确的是(  )。

    • A.T=R∩S
    • B.T=R∪S
    • C.T=R×S
    • D.T=R/S
  10. 类模板的使用实际上是将类模板实例化成一个具体的(  )。

    • A.类
    • B.对象
    • C.函数
    • D.模扳类
  11. 若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是(  )。

    • A.Data+{Data};
    • B.Dataoperator+{Data};
    • C.Data+operator{Data};
    • D.operator+{Data.Data};
  12. 下列关于纯虚函数与抽象类的描述中,错误的是(  )。

    • A.纯虚函数是一种特殊的虚函数,它没有具体的实现
    • B.抽象类是指具有纯虚函数的类
    • C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
    • D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
  13. 下列关于构造函数和析构函数的描述,错误的是(  )。

    • A.析构函数中调用虚函数采用静态联编
    • B.对虚析构函数的调用可以采用动态联编
    • C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
    • D.构造函数可以声明为虚函数
  14. 下列是关于派生类声明的开始部分,其中正确的是(  )。

    • A.classvirtualB:publicA
    • B.virtualclassB:publicA
    • C.classB:publicAvirtual
    • D.classB:virtualpublicA
  15. 针对数组定义intdata[10];,下列表述中错误的是(  )。

    • A.用*data可访问到数组的首元素
    • B.用data[9]可访问到数组的末元素
    • C.用data[10]访问数组元素会超出数组边界
    • D.data共有10个元素,其首元素是data[1]
  16. 已知类MyClass的定义如下:

    ClassMyClass{

    public:

    MyClass(intd){data=d;}

    ~MyClass(){}

    private:

    intdata;

    };

    下列对MyClass类对象数组的定义和初始化语句中,正确的是(  )。

    • A.MyClassarray[2];
    • B.MyClassarray[2]={MyClass(5)};
    • C.MyClassarray[2]={MyClass(5),Myclass(6)};
    • D.MyClass*array=newMyClass[2];
  17. 下列关于二叉树的叙述中,正确的是(  )。

    • A.叶子结点总是比度为2的结点少一个
    • B.叶子结点总是比度为2的结点多一个
    • C.叶子结点数是度为2的结点数的两倍
    • D.度为2的结点数是度为1的结点数的两倍
  18. 下列程序的执行结果是(  )。

    #include

    classSample

    {

    intx,y;

    public:

    Sample(){x=y=0;}

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

    ~Sample()

    {

    if(x==y)

    cout<<"x=y"<

    else

    cout<<"x!=y"<

    }

    voiddisp()

    {

    cout<<"x="<

    };

    voidmain()

    {

    Samples1(2,3);

    s1.disp();

    }

    • A.x=2,y=2
    • B.x=3,y=3
    • C.x=2,y=3
    • D.x=3,y=2
  19. 有如下程序:

    #included

    usingnamespqcestd;

    classTestClass

    {

    private;

    charC;

    public;

    TestClass(charn):c(n){}

    ~TestClass()

    {

    cout<

    }

    };

    classTestClassl:publicTestClass

    {

    private:

    charC;

    public:

    TestClassl(charn):TestClass(n+1),c(n){}~TestClassl()

    {

    cout<

    }

    };

    intmain()

    {

    TestClasslobj('X');

    return0;

    }

    执行上面的程序将输出(  )。

    • A.xy
    • B.yx
    • C.X
    • D.y
  20. 下列叙述中错误的是(  )。

    • A.gets函数用于从终端读入字符串
    • B.getchar函数用于从磁盘文件读入字符
    • C.fputs函数用于把字符串输出到文件
    • D.fwrite函数用于以二进制形式输出数据到文件
  21. 为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是(  )。

    • A.+
    • B.=
    • C.<<
    • D.++
  22. 有两个关系R和T如下所示:

    则由关系R得到关系T的操作是(  )。

    • A.选择
    • B.投影
    • C.交
    • D.并
  23. 设有定义语句int(*f)(int);,则下列叙述正确的是(  )。

    • A.f是基类型为int的指针变量
    • B.f是指向函数的指针变量,该函数具有一个int类型的形态
    • C.f是指向int类型一维数组的指针变量
    • D.f是函数名,该函数的返回值是其类型为int类型的地址
  24. 有下列程序:

    #include

    voidmain(  )

    {FILE*pf;

    char*s1="China",*s2="Beijing";

    pf=fopen("abc.dat","wb+");

    fwrite(s2,7,1,pf);

    rewind(pf);/*文件位置指针回到文件开头*/

    fwrite(s1,5,1,pf);

    fclose(pf);

    }

    以上程序执行后abc.dat文件的内容是(  )。

    • A.China
    • B.Chinang
    • C.ChinaBeijing
    • D.BeijingChina
  25. 下列叙述中正确的是(  )。

    • A.在面向对象的程序设计中,各个对象之间具有密切的关系
    • B.在面向对象的程序设计中,各个对象都是公用的
    • C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
    • D.上述三种说法都不对
  26. 下列关于文件流的描述中,正确的是(  )。

    • A.文件流只能完成针对磁盘文件的输入、输出
    • B.建立一个文件流对象时,必须同时打开一个文件
    • C.若输入流要打开的文件不存在,将建立一个新文件
    • D.若输出流要打开的文件不存在,将建立一个新文件
  27. 下列说法正确的是(  )。

    • A.内联函数在运行时将该函数的目标代码插入每个调用该函数的地方
    • B.内联函数在编译时将该函数的目标代码插入每个调用该函数的地方
    • C.类的内联函数必须在类体内定义
    • D.类的内联函数必须在类体外通过加关键字inline定义
  28. 在函数中,可以用aut0、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是(  )。

    • A.auto
    • B.extern
    • C.register
    • D.static
  29. 下列关于函数模板的描述中,正确的是(  )。

    • A.函数模板是一个实例函数
    • B.使用函数模板定义的函数没有返回类型
    • C.函数模板的类型参数与函数的参数相同
    • D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数
  30. 有如下程序:

    #include

    usingnamespacestd;

    classVAC{

    public;

    intf()const(return3;}

    intf(){return5;}

    };

    Intmain(){

    VACv1:

    constVACv2;

    cout<

    return0;

    }

    运行时的输出结果是()。

    • A.53
    • B.35
    • C.55
    • D.33
  31. 下列数据结构中,能够按照“先进后出”原则存取数据的是(  )。

    • A.循环队列
    • B.栈
    • C.队列
    • D.二叉树
  32. 将E—R图转换为关系模式时,实体和联系都可以表示为(  )。

    • A.属性
    • B.键
    • C.关系
    • D.域
  33. 定义无符号整数为Uint,下面可以作为类Uint实例化值的是(  )。

    • A.-369
    • B.369
    • C.0.369
    • D.整数集合{1,2,3,4,5}
  34. 下列叙述中,不属于软件需求规格说明书的作用的是(  )。

    • A.便于用户、开发人员进行理解和交流
    • B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
    • C.作为确认测试和验收的依据
    • D.便于开发人员进行需求分析
  35. 结构化程序所要求的基本结构不包括(  )。

    • A.顺序结构
    • B.GOT0跳转
    • C.选择(分支)结构
    • D.重复(循环)结构
  36. 已知主函数中通过如下语句序列实觋对函数模板swap的调用:

    inta[10],b[1O];

    swap(a,b,10);

    下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是(  )。

    • A.template    voidswap(Ta[],Tb[],intsize);
    • B.template    voidswap(intsize,Ta[],Tb[]);
    • C.template    voidswap(T1a[],T2b[],intsize);
    • D.template    voidswap(T1a[],T2b[],intsize);
  37. 设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为(  )。

    • A.课号、成绩
    • B.学号、成绩
    • C.学号、课号
    • D.学号、姓名、成绩
  38. 数据的存储结构是指(  )。

    • A.数据所占的存储空间
    • B.数据的逻辑结构在计算机中的存放形式
    • C.数据在计算机中的顺序存储方式
    • D.存储在计算机外存中的数据
  39. 下列有关模板的叙述中,正确的是(  )。

    • A.函数模板不能含有常规形参
    • B.函数模板的一个实例就是一个函数定义
    • C.类模板的成员函数不能是模板函数
    • D.用类模板定义对象时,绝对不能省略模板实参
  40. 若已定义

    inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;

    则对数组元素不正确的引用是(  )。

    • A.a[p-a]
    • B.*(&a[i])
    • C.p[i]
    • D.*(*(a+i))
  41. 若变量已正确定义,有下列程序段

    inta=3,b=5,c=7;

    if(a>b)a=b;c=a;

    if(C!=a)C=b;

    printf(”%d,%d,%d\n”,a,b,c);

    其输出的结果是(  )。

    • A.程序段有语法错
    • B.3,5,3
    • C.3,5,5
    • D.3,5,7
  42. 有下列程序:

    #include

    intb=2:

    intfun(int*k)

    {b=*k+b;return(b);}

    voidmain()

    {inta[1O]={1,2,3,4,5,6,7,8},i;

    for(i=2;i<4;i++){b=fun(&a[i])+b;printf

    ("%d",b);}

    printf("\n");

    }

    程序运行后的输出结果是(  )。

    • A.1012
    • B.810
    • C.1028
    • D.1016
  43. 有下列二叉树,对此二叉树中序遍历的结果县(  )。

    • A.BDYEACFXZ
    • B.DYBEAFCZX
    • C.ABCDEFXYZ
    • D.ABDYECFXZ