一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. (1)将“TC(inti,intj)”补充完整为“TC(inti,intj):Num2(j)”。

    (2)应添加“friendvoidfunc;”。

    (3)应添加“intTC::Num3=4;”。

    (4)将“obi.AddNum”补充完整为“obj.AddNum(2);”。

    【解析】本题在第1处完成类的构造函数初始化类的成员变量,常数据成员也必须初始化,并且不能被更新,常数据成员的初始化只能通过构造函数的成员初始化类表进行,因此第1处的语句应为“TC(inti,intj):Num2(j)”,i用来初始化Num1和Num3,j初始化Num2。第2处完成fune的函数定义,由审题分析可知,函数fune为类的友元,故第2处的语句应为“friendvoidrune;”。第3处的语句是静态成员的初始化,静态数据成员的初始化格式为“(数据类型)<类名>::<静态数据成员)=<初始值>”,因此第3处的语句应为“intTC::Num3=4;”。成员函数AddNum带有一个整型参数,因此调用此函数时必须有参数传入,可由程序运行结果分析得知传入的参数值的大小。在fun函数内,定义TCobj(1,2)后,obj.Num1=1,obj.Num2=2,Num3=16+1=17,obj.Num1=4,Numl为4,obj。Num2为常数据成员,其值不会改变,调用AddNum函数后调用显示函数显示成员变量值,可知Num3为19,因此AddNum的参数为19-17=2,即第4处的语句应为“obj.AddNum(2);”。

  2. 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,即使程序在屏幕输出以下类似内容:

    0012FF6810012FF3C5

    0012FF6C20012FF444

    0012FF7030012FF4C3

    0023FF7440012FF542

    0012FF7850012FF5C1

    006AFDCC~006AFDEF数据可能因为机器的不同,程序输出的内容会有差异。只要相差为4的连续地址即可。

    注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

    试题程序:

    #include

    usingnamespacestd;

    intmain()

    {

    int*P,a[5]={1,2,3,4,5};

    double*q,b[5]={5.0,4.0,3.0,2.0,1.0);

    intx;

    P=a;

    q=b;

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

    for(x=0;x<=5;X++)

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

    cout<

    (q+x)<

    return0;

    }

  3. 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。

    函数sort(int&m,int&n,int&1)实现将3个整数m,n,1由大到小输出。m最大,1最小。程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果m

    将函数sort(int&m,int&n,int&1)补充完整,实现3个数的排序。

    注意:请勿改动主函数。

    试题程序:

    #include

    voidsort(int8Lm,int&n,int&1)

    {

    }

    intmain

    {

    intx=9:

    inty=13;

    intz=-3:

    sort(X,y,z);

    cout<

    return0;

    }

  4. 对如下二叉树进行后序遍历的结果为(  )。

    • A.ABCDEF
    • B.DBEAFC
    • C.ABDECF
    • D.DEBFCA
  5. 在C++中,cin是一个(  )。

    • A.类
    • B.对象
    • C.模板
    • D.函数
  6. 下列关于运算符重载不正确的是(  )。

    • A.运算符重载不能改变运算符的操作数个数
    • B.运算符重载不能改变运算符的优先级
    • C.运算符重载不能改变运算符的结合性
    • D.运算符重载能改变对预定义类型数据的操作方式
  7. 若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是(  )。

    • A.Data+(Data);
    • B.Dataoperator+(Data);
    • C.Data+operator(Data);
    • D.operator+(Data.Data);
  8. C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream提供了基本的I/O类。I/O操作分别由两个类istreanl和(  )提供。

    • A.fstream
    • B.iostream
    • C.ostream
    • D.cin
  9. 下面程序的运行结果为(  )。

    #include

    classA

    {

    intnum;

    public:

    • A(inti){num=i;)
    • A(A&a){num=a.num++;}    voidprint(){cout<
    • Aa(1),b(a);
    • A.print();
    • B.print();    }
    • C.11B.12
    • D.21D.22
  10. 下列控制格式输入输出的操作符中,能够设置浮点数精度的是(  )。

    • A.setprecision
    • B.setw
    • C.setfill
    • D.showpoint
  11. 下面程序的结果是(  )。

    #include(iostream.h>

    classA

    {

    inta;

    public:

    • A(  ):a(1){}    voidshowa(  )(cout<};
    • classB    {
    • inta;    public:
    • B(  ):a(2){}    voidshowa(  ){cout<};
    • classC:publicA,publicB    {
    • inta;    public:
    • C(  ):a(3){}    voidshowa(  ){cout<};    voidmain(  )    {
    • CC;    showa(  );     }
    • A.1
    • B.2
  12. 在软件开发中,需求分析阶段可以使用的工具是(  )。

    • A.N—S图
    • B.DFD图
    • C.PAD图
    • D.程序流程图
  13. 有以下程序:

    #include(iostream.h)

    voidfun(inta,intb,intc)

    {a=456,b=567,C=678;}

    voidmain(  )

    {

    intx=10,y=20,z=30;

    fun(x,Y,z);

    cout<

    }

    输出结果是(  )。

    • A.30,20,10
    • B.10,20,30
    • C.456,567,678
    • D.678,567,456
  14. 有如下程序:

    #include

    Usingnamespacestd;

    ClassMyClass{

    Public:

    MyClass(){cout<<'*';}

    MyClass(MyClass&a){cout<<'#';}

    ~MyClass(){cout<<'@';}

    };

    intmain(){

    MyClassa;

    MyClassb(a);Return0;

    }

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

    • A.*@#@
    • B.#@*@
    • C.*#@@
    • D.#*@@
  15. 有下列程序:

    #include

    voidfun(inta,intb)

    {intt;

    t=a;a=b;b=t;

    voidmain(  )

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

    for(i=0;i<10;i+=2)fun(c[i],c[i+1]);

    for(i=0;i<10;i++)printf(”%d,”,c[i]);

    printf("\n");

    }

    程序的运行结果是(  )。

    • A.1,2,3,4,5,6,7,8,9,0
    • B.2,1,4,3,6,5,8,7,0,9
    • C.0,9,8,7,6,5,4,3,2,1
    • D.0,1,2,3,4,5,6,7,8,9
  16. 数据库设计包括两个疗面的设计内容,他们是(  )。

    • A.概念设计和逻辑设计
    • B.模式设计和内模式设计
    • C.内模式设计和物理设计
    • D.结构特性设计和行为特性设计
  17. 执行语句:cout<

    • A.123*******0K
    • B.123#######OK
    • C.123********0K********
    • D.123#######OK########
  18. 设变量已正确定义,下列不能统计出一行中输入字符个数(不包含回车符)的程序段是(  )。

    • A.n=0;while((ch=getchar(  ))!='\n')n++;
    • B.n=0;while(getchar(  )!='\n')n++;
    • C.for(n=0;getchar(  )!='\n';n++);
    • D.n=0;for(ch=getchar(  );ch!='n';n++);
  19. 有如下程序:

    #include

    usingnamespacestd;

    intmain(  ){

    inta[6]={23,15,64,33,40,58};

    ints1,s2;

    s1=s2=a[0];

    for(int*p=a+1;pif(s1>*p)s1=*p;

    if(s2<*p)s2=*p;

    }

    cout<

    return0;

    }

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

    • A.23
    • B.58
    • C.64
    • D.79
  20. C++系统预定义了3个用于标准数据流的对象,下列选项中不属于此类对象的是(  )。

    • A.cout
    • B.cin
    • C.cerr
    • D.cset
  21. 使用ifstream流类定义流对象并打开磁盘文件时,文件的隐含打开方式为(  )。

    • A.ios::in
    • B.ios::out
    • C.ios::inlios::out
    • D.没有默认
  22. 有如下数组声明:intnum[10】;,下标值引用错误的是(  )。

    • A.num[10]
    • B.num[5]
    • C.num[3]
    • D.num[0]
  23. 有下列程序:

    #include

    #include

    intfun(intn)

    {int*P;

    p=(int*)malloc(sizeof(int));

    *P=n;return*P;

    }

    voidmain(  )

    {inta;

    • a=fun(10);printf("%d\n",a+fun(10));}    程序的运行结果是(  )。
    • A.0
    • B.10
    • C.20
    • D.出错
  24. 下面程序的运行结果是(  )。

    #include

    intfun(inta[],intn)

    {

    intresult=1;

    for(inti=1;i(n;i++)

    result=result*a[i];

    returnresult;

    }

    voidmain(  )

    {

    inta[3]={3,4,5);

    coHt<

    }

    • A.12
    • B.15
    • C.20
    • D.60
  25. 在下面的运算符重载函数的原型中,错误的是(  )。

    • A.Volumeoperator-(double,double);
    • B.doubleVolume::operator-(double);
    • C.VolumeVolume::operator-(Volume);
    • D.Volumeoperator-(Volume);
  26. 在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用(  )。

    • A.内联函数
    • B.重载函数
    • C.递归调用
    • D.嵌套调用
  27. 有如下程序:

    #include

    usingnamespacestd;

    className{

    charname[20];

    public:

    Name(  ){

    strcpy(name,"");cout<<'?';

    }

    Name(char*fname){

    strcpy(name,fname);cout<<'?';

    }

    };

    intmain(  ){

    Namenames[3]={Name(”张三”),Name(”李四”));

    return0;

    }

    运行此程序输出符号?的个数是(  )。

    • A.O
    • B.1
    • C.2
    • D.3
  28. 有如下程序:

    #inelude

    usingnamespacestd;

    classTest

    {

    public:

    Test(){n+=2;}

    ~Test(){n-=3;}

    staticintgetNum(){returnn;}

    private:

    staticintn;

    };

    intTest::n=1;

    intmain()

    Test*P=newTest:

    deleteP;

    cout<<"n="<

    return0;

    }

    执行后的输出结果是(  )。

    • A.n=0
    • B.n=1
    • C.n=2
    • D.n=3
  29. 下列对于软件测试的描述正确的是(  )。

    • A.软件测试的目的是证明程序是否正确
    • B.软件测试的目的是使程序运行结果正确
    • C.软件测试的目的是尽可能地多发现程序中的错误
    • D.软件测试的目的是使程序符合结构化原则
  30. 下列函数按每行8个输出数组中的数据。

    voidfun(int*W.intn)

    {inti;

    for(i=0;i

    {____

    printf("%d",w[i]);

    }

    printf("\n")

    }

    下画线处应填入的语句是(  )。

    • A.if(i/8==0)printf("\n");
    • B.if(i/8=0)continue;
    • C.if(i%8==0)printf("\n");
    • D.if(i%8==0)continue;
  31. 数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是(  )。

    • A.DB包括DBS和DBMS
    • B.DBMS包括DB和DBS
    • C.DBS包括DB和DBMS
    • D.没有任何关系
  32. 有如下程序:

    #include

    usingnamespacestd;

    classC1{

    public:

    ~C1(  ){cout<<1;)

    };

    classC2:publicC1{

    public:

    ~C2(  ){cout<<2;)

    };

    intmain(  ){

    C2cb2;

    C1*cb1:

    return0;

    }

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

    • A.121
    • B.21
    • C.211
    • D.12
  33. 语句ofstreamf("DATA.DAT",ios_base::app|ios_base::binary);的功能是建立流对象f,试图打开文件DA-TA.DAT并与之连接,而且(  )。

    • A.若文件存在,将文件指针定位于艾件首;若文件不存在,建立一个新文件
    • B.若文件存在,将其截为空文件;若文件不存在,打开失败
    • C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
    • D.若文件存在,打开失败;若文件不杉在,建立一个新文件
  34. 有以下程序:

    voidmain(  )

    {inta=5,b=4,c=3,d=2;

    if(a>b>c)

    cout<

    elseif((C-1>=d)==1)

    cout<

    else

    cout<

    }

    • A.2
    • B.3
    • C.4
    • D.编译时有错,无结果
  35. 生成派生类对象时,派生类构造函数调用基类构造函数的条件是(  )。

    • A.无需任何条件
    • B.基类中显式定义了构造函数
    • C.派生类中显式定义了构造函数
    • D.派生类构造函数明确调用了基类构造函数
  36. 下列描述中,错误的是(  )。

    • A.公有继承时基类中的公有成员在派生类中仍是公有成员
    • B.公有继承时基类中的保护成员在派生类中仍是保护成员
    • C.保护继承时基类中的公有成员在派生类中仍是公有成员
    • D.保护继承时基类中的保护成员在派生类中仍是保护成员
  37. 下面关于数组的初始化正确的是(  )。

    • A.charstr[]={'a','b','e'}
    • B.charstr[2]={'a','b','e')
    • C.charstr[2][3]={{'a','b'},{'C','d'},{'e','f'}}
    • D.charstr()={'a','b','C'}
  38. 对于复制构造函数和赋值操作的关系,正确的是(  )。

    • A.复制构造函数和赋值操作是完全一样的操作
    • B.进行赋值操作时,会调用类的构造函数
    • C.当调用复制构造函数时,类的对象正在被建立并被初始化
    • D.复制构造函数和赋值操作不能在同一个类中被同时定义
  39. C++系统预定义了四个用于标准数据流的对象,下列选项中不属于此类对象的是(  )。

    • A.cout
    • B.cin
    • C.cerr
    • D.cset
  40. 有如下程序:

    #include(iostream>

    usingnamespacestd;

    classCon

    {

    charID;

    public:

    Con(  ):ID('A){cout<<1;}

    Con(charID):ID(ID){cout((2;)

    Con(Con8Lc):ID(c.getlD(  )){cout<<3;}

    chargetID(  )const{returnID;}

    };

    voidshow(Conc){cout<

    intmain(  )

    {

    Conc1;

    show(c1);

    Conc2('B');

    show(c2);

    return0;

    执行上面程序的输出结果是(  )。

    • A.13A23A
    • B.23A13B
    • C.13A23B
    • D.13823A
  41. 已知Value是一个类,Value是Value的一个对象。

    下列以非成员函数形式重载的运算符函数原形中,正确的是(  )。

    • A.Valueoperator+(Valuev,inti);
    • B.Valueoperator+(Valuev=value,inti);
    • C.Valueoperator+(Valuevinti=O);
    • D.Valueoperator+(Valuev=value,inti=O);
  42. 下列关于运算符函数的描述中,错误的是(  )。

    • A.运算符函数的名称总是以0perator为前缀
    • B.运算符函数的参数可以是对象
    • C.运算符函数只能定义为类的成员函数
    • D.在表达式中使用重载的运算符相当于调用运算符重载函数
  43. 有如下程序:

    #include

    usingnamespacestd;

    classBase{

    public:

    virtualvoidfunctionl(){cout<<'0';}

    voidfunction2(){out<<'1';}

    };

    classDerived:publicBase{

    oublic:

    voidfunctionl(){cout<<'2';}

    voidfunction2(){cout<<'3';}

    };

    intmain(){

    Base*p=newDerived();

    p->functionl();

    p->function2();

    return0;

    }

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

    • A.01
    • B.21
    • C.03
    • D.23