2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(7)

考试总分:43分

考试类型:模拟试题

作答时间:60分钟

已答人数:967

试卷答案:有

试卷介绍: 2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(7)

开始答题

试卷预览

  • 1. 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#includeclassTC{public:TC(inti){number=i;}voidSetNumber(intm){number=m;}intGetNumber()const{returnnumber;}voidPrint()const{cout<<"number="<<number<}private:intnumber;};voidmain(){//********error********TCobjl;objl.Print();TCobj2(3);//********error********objl.number=10;//********error*‰******TC.SetNumber(100);objl.Print();obj2.Print();}[18分]
  • 2. 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。(1)funl(intn)求出n的阶乘,必须使用递归调用。(2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。注意:不能修改函数的其他部分。试题程序:#include//必须使用递归intfunl(intn){}//不能使用递归intfun2(intn){}voidmain(){inti;cout>i;cout<<"输入数字的阶乘是:"<<funl(i)<cout<<"输入数字的阶乘是:"<<fun2(i)<return;}[24分]

    A(1)funl(intn)求出n的阶乘,必须使用递归调用。

    B(2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。注意:不能修改函数的其他部分。试题程序:#include//必须使用递归intfunl(intn){}//不能使用递归intfun2(intn){}voidmain(){inti;cout>i;cout<<"输入数字的阶乘是:"<<funl(i)<cout<<"输入数字的阶乘是:"<<fun2(i)<return;}[24分]

  • 3. 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成类的构造函数功能,请在注释1后添加适当的语句。(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。(3)定义类的友元函数fun,请在注释3后添加适当的语句。(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeclassPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if(){for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain(){chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<return;}[18分]

    A(1)完成类的构造函数功能,请在注释1后添加适当的语句。

    B(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。

    C(3)定义类的友元函数fun,请在注释3后添加适当的语句。

    D(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeclassPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if(){for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain(){chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<return;}[18分]

  • 4. 有如下程序:#includeusingnamespacestd;classDA{intk;public:DA(intx=1):k(x){}~DA(){cout<<k;}};intmain(){DAd[]={DA(3),DA(3),DA(3));DA+p=newDA[2];delete[]p;return();}这个程序的输出结果是()。[1分]

    A111

    B333

    C11333

    D11133

  • 5. 有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++;)~Toy(){count一一;)char*GetName(){returnname;}staticintgetCount(){returncount;)private:charname[10];staticintcount;};intToy::count=0;intmain(){Toyt1("snoopy"),t2("Mickey"),t3("Barbie");tout<<return0;)运行时的输出结果是()。[1分]

    A1

    B2

    C3

    D运行时出错

  • 6. 下列选项中不属于结构化程序设计方法的是()。[1分]

    A自顶向下

    B逐步求精

    C模块化

    D司复用

  • 7. 下列叙述中正确的是()。[1分]

    AC程序中的注释只能出现在程序的开始位置和语句的后面

    BC程序书写格式严格,要求一行内只能写一个语句

    CC程序书写格式自由,一个语句可以写在多行上

    D用C语言编写的程序只能放在一个程序文件中

  • 8. 对于语句“cout<<setfill('*')<<setw(10)<<1<<serfill('*')<<setw(2)<[1分]

    A*********1*2

    B********12

    C*******1*2

    D12********

  • 9. 若函数中有定义语句“intk;”.则()。[1分]

    A系统将自动给k赋初值0

    B这时k中的值无定义

    C系统将自动给k赋初值-1

    D这时k中无任何值

  • 10. 下列程序段中的变量已正确定义:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的输出结果是()。[1分]

    A********

    B****

    C**

    D*

  • 11. 下列程序中横线处应填入的语句是()。classBase{public:voidfun(){cout<<"Baseoffun"<classDerived:publicBase{voidfun(){//显示基类的成员函数funcout<<"Derivedoffun"<}};[1分]

    Afun();

    BBase.fun();

    CBase::fun();

    DBase->fun();

  • 12. 索引属于()。[1分]

    A模式

    B内模式

    C外模式

    D概念模式

  • 13. 下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是()。[1分]

    Aif(a<=b)n=0;

    Bif((a>b)‖(b>c))n=1;elsen=0;

    Cif(a>b)if(b>c)n=1;elsen=;elsen=0;

    Dif(a>b)n=1;elseif(bc)n=1;elsen=0;

  • 14. 有以下程序:#includeusingnamespacestd;classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print(){cout<<r1<<","<<r2<<endl;}voidR::print()const{cout<<r1<<","<<r2<<endl;}intmain(){Ra(5,4);constRb(20,52);print();return0;}执行后的输出结果是()。[1分]

    A5,4

    B20,52

    C0,0

    D4,5

  • 15. 有如下的程序:#include#includeusingnamespacestd;classMyString{public:MyString(constchar*s);MyString(){delete[]data;}protected:unsignedlemchar*data;};MyStrin9::MyString(constchar*s){len=strlen(s);data=newchar[len+1];strcpy(data,s);}intmain(){MyStringa("C++Programing");MyStringb(a);return0;}在运行上面的程序时出错,出错的原因是()。[1分]

    A构造函数的实参不允许是本类的对象

    B没有定义实现深层复制的复制构造函数

    C构造对象a时实参与形参类型不符

    D系统不能生成默认的复制构造函数

  • 16. 设变量已正确定义并赋值,以下正确的表达式是()。[1分]

    Ax=y+5=x+z

    Bint(15.8%5)

    Cx=y+z+5,++y

    Dx=25%5.0

  • 17. 下面描述中错误的是()。[1分]

    A系统总体结构图支持软件系统的详细设计

    B软件设计是将软件需求转换为软件表示的过程

    C数据结构与数据库设计是软件设计的任务之一

    DPAD图是软件详细设计的表示工具

  • 18. 程序段“intx=12;doubley=3.141593;printf(”%d%8.6'f",X,y);”的输出结果是()。[1分]

    A123.141593

    B123.141593

    C12,3.141593

    D123.1415930

  • 19. 有下列程序:#includevoidmain(){char*a[]={"abed","ef","gh","ijk");inti;for(i=0;i<4;i++)printf("%C",*a[i]);}程序运行后的输出结果是()。[1分]

    Aaegi

    Bdfhk

    Cabed

    Dabcdcfghijk

  • 20. 函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[o]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为()。[1分]

    A1,1

    B1,2

    C2,2

    D2,1

  • 21. 已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则()。[1分]

    AFA必须定义在FB之前

    BFB必须定义在FA之前

    C若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

    D若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

  • 22. 下列表达式的值为false的是()。[1分]

    A1<3&&5<7

    B!(2>4)

    C3&0&&l

    D!(5<8)‖(2<8)

  • 23. 下列叙述中错误的是()。[1分]

    A在程序中凡是以“#”开始的语句行都是预处理命令行

    B预处理命令行的最后不能以分号表示结束

    C#defineMAX是合法的宏定义命令行

    DC++中预处理命令行的处理是在程序执行的过程中进行的

  • 24. 已经有“语句intm=10;”则下列表示引用的表示中正确的是()。[1分]

    Aint&x=m;

    Bint&y=10;

    Cint&z;

    Dfloat&t=8m;

  • 25. 下列关于析构函数的描述中,错误的是()。[1分]

    A析构函数可以重载

    B析构函数由系统自动调用

    C每个对象的析构函数只被调用一次

    D每个类都有析构函数

  • 26. 下面关于运算符重载的描述错误的是()。[1分]

    A运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构

    B不是所有的运算符都可以进行重载

    C运算符函数的调用必须使用关键字0perator

    D在C++语言中不可通过运算符重载创造出新的运算符

  • 27. 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是()。[1分]

    A编译程序

    B操作系统

    C教务管理系统

    D汇编程序

  • 28. 下列不构成无限循环的语句或语句组是()。[1分]

    An=0;do{++n;)while(n<=0);

    Bn=0;while(1){n++;)

    Cwhile(n=1O);{n--;}

    Dfor(n=0,i=1;;i++)n+=i

  • 29. 设有下列程序段:chars[20]="Beijing",*P;P=S;则执行“p=s;”语句后,下列叙述正确的是()。[1分]

    A可以用*P表示s[0]

    BS数组中元素的个数和P所指字符串长度相等

    CS和P都是指针变量

    D数组s中的内容和指针变量P中的内容相同

  • 30. 若有定义语句“inti=2,j=3;”,则表达式i/j的结果是()。[1分]

    A0

    B0.7

    C0.66667

    D0.66666667

  • 31. 下列关于栈的叙述正确的是()。[1分]

    A栈按“先进先出”组织数据

    B栈按“先进后出”组织数据

    C只能在栈底插入数据

    D不能删除数据

  • 32. 有下列程序:#includevoidmain(){inti=5;do{if(i%3=1)if(i%5==2){printf("*%d",i);break;}i++:}while(i!=O);printf("\n");}程序的运行结果是()。[1分]

    A*7

    B*3*5

    C*5

    D*2*6

  • 33. 有如下程序:#includedusingnamespacestd;classTestClass{inta;pubIic:TestClass(intx){a=x;}voidshow(){coutshow();return0;}该程序运行后的打印结果是()。[1分]

    A5

    B1

    C0

    D2

  • 34. 有下列程序:#includevoidmain(){intx=1,y=2,z=3;if(x>y)if(yelseprintf("%d",++y);printf(”%d\n”,x++);}程序的运行结果是()。[1分]

    A331

    B41

    C2

    D1

  • 35. 派生类的成员函数不能访问基类的()。[1分]

    A公有成员和保护成员

    B公有成员

    C私有成员

    D保护成员

  • 36. 有如下程序:#includeusingnamespacestd;classTestClass{public:virtualvoidfunl(){coutfun1();p->fun2();return0;}该程序执行后的输出结果是()。[1分]

    AfunlTestClasslfun2TestClass

    BfunlTestClass1fun2TestC1ass1

    CfunlTestClassfun2TestClass

    DfunlTestClassfun2TestClassl

  • 37. 有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidPrint()const{cout<<"const:val="<<<val<<'\t';}voidPrint(){cout<<"val="<<val<<'t';}private:intval;};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print();obj2.Print();return0;}程序的输出结果是()。[1分]

    Ava1=10const:va1=20

    Bconst:va1=10const:va1=20

    Cconst:va1=10val=20

    Dval=10va1=20

  • 38. 有下列程序:#include#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i}voidmain(){intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}),y[N],i;fun(x,y);for(i=0;iprintf("\n");}程序的运行结果是()。[1分]

    A1,2,3,4,

    B1,0,7,0,

    C1,4,5,9,

    D3,4,8,10,

  • 39. 有如下程序:#includeusingnamespacestd;classB{public:virtualvoidshow(){coutshow();}voidfun2(B&ref){ref.show();}voidfun3(BB){b.show();}intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);return0;}程序的输出结果是()。[1分]

    ABBB

    BBBD

    CDBB

    DDBD

  • 40. 有下列程序:#includevoidmain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--),continue;}printf(”%d,”,--x);}}程序的运行结果是()。[1分]

    A7,4,2

    B8,7,5,2

    C9,7,6,4

    D8,5,4,2

  • 41. 下列叙述中错误的是()。[1分]

    A在程序中凡是以“#”开始的语句行都是预处理命令行

    B预处理命令行的最后不能以分号表示结束

    C#defineMAX是合法的宏定义命令行

    DC程序中预处理命令行的处理是在程序执行的过程中进行的

  • 42. 对于类定义:classA{public:virtualvoidfuncl(){}voidfunc2(){}};classB:publicA{public:voidfuncl(){cout<<"classBfunc1"<<endl;}virtualvoidfunc2(){cout<<"classBfunc2"<<endl;}};下面正确的叙述是()。[1分]

    AA::func2()和B::func1()都赵虚函数

    BA::rune2()和B::func1()都不是虚函数

    CB::func1()是虚函数,而A::fune2()不是虚函数

    DB::func1()不是虚函数,而A::func2()是虚函数

  • 43. 类A是类B的友元,类B是类C的友元,则下列说法正确的是()。[1分]

    A类B是类A的友元

    B类C是类A的友元

    C类A是类C的友元

    D以上都不对

相关试卷
相关题库