2014年全国计算机等级《二级C++》上机考试冲刺试题(4)

考试总分:43分

考试类型:模拟试题

作答时间:60分钟

已答人数:967

试卷答案:有

试卷介绍: 2014年全国计算机等级《二级C++》上机考试冲刺试题(4)

开始答题

试卷预览

  • 1. 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含一个源程序文件main.cpp,其中有类Book(“书”)和主函数main的定义。程序中位于每个“//ERROR****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:书名:C++语句程序设计总页数:299已把“c++语言程序设计”翻到第50页已把“c++语言程序设计”翻到第51页已把“c++语言程序设计”翻到第52页已把“c++语言程序设计”翻到第51页已把书合上。当前页:0注意:只修改每个“//ERROR***found***”下的那一行,不要改动程序中的其他内容。#includeusingnamespacestd;classBook{char*title;intnum—pages;//页数intcur_page;//当前打开页面的页码,0表示书未打开public://ERROR***********found***********Book(constchar*theTitle,intpages)num_pages(pages){title=newchar[strlen(theTitle)+1];strepy(title,theTitle);cout<<ENDL<<”书名:”<<TITLE<<”总页数:”<}~Book(){delete[]title;}boolisClosed()const{returncur_page==0;}//书合上时返回true,否则返回falseboolisOpen()const{return!isClosed();}//书打开时返回true,否则返回falseintnumOfPages()const{returnnum_pages;}//返回书的页数intcurrentPage()const{returncur_page;}//返回打开页面的页码//ERROR***********found***********voidopenAtPage(intpage_no)const{//把书翻到指定页cout<i“page_nohum_pages){tOUt<<”无法翻到第”<ClOSe();}else{cur_page=page_n0;tout<<”已把“"<<TIDE<<"”翻到第"<}}voidopenAtPrevPage(){openAtPage(curpage—1);{//把书翻到上一页voidopenAtNextPage(){openAtPage(cur_page+1);}//把书翻到下一页voidclose(){//把书合上tout<if(isClosed())tout<<"书是合上的。";else{//ERROR**********found**********num_pages=0;cout<<”已把书合上。”;}cOut<}};intmain(){Bookbook(”C++语言程序设计”,299);book.openAtPage(50);book.openAtNextPage();book.openAtNextPage();book.openA.tPrevPage();book.close();tout<<”当前页:”<<BOOK.CURRENTPAGE()<return0:}[18分]
  • 2. 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为:按姓名排序排序前:张三男出生日期:1978年4月20日王五女出生日期:1965年8月3日杨六女出生日期:1965年9月5日李四男出生日期:1973年5月30日排序后:李四男出生日期:1973年5月30日王五女出生日期:1965年8月3日杨六女出生日期:1965年9月5日张三男出生日期:1978年4月20日注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#includeusingnamespacestd;classDate{//日期类intyear,month,day;//年、月、日public:Date(intyear,intmonth,intday):year(year),month(month),day(day){}intgetYear()const{returnyear;}intgetMonth()const{returnmonth;}intgetDay()const{returnday;}};classPerson{//人员类charname[14];//姓名boolis—male;//性别,为true时表示男性Datebirth—date;//出生日期public:Person(char*name,boolis—male,Datebirth_date)//***************found***************:——————{{strcpy(this一>name,name);}constchar*getName()const{returnname;}boolisMale()const{returnis—male;}DategetBirthdate()const{returnbirth—date;}//利用strcmp()函数比较姓名,返回一个正数、0或负数,分别表示大于、等于、小于intcompareName(constPerson&p)const{//***************found*****************————}voidshow(){couti){PersonP=ps[m];ps[m]=ps[i];ps[i]=p;}}}intmain(){Personstaff[]={Person(”张三”,true,Date(1978,4,20)),Person(”王五”,false,Date(1965,8,3)),Person(”杨六”,false,Date(1965,9,5)),Person(”李四”,tme,Date(1973,5,30))};constintsize=sizeof(staff)/sizeof(staff[0]);inti;eout<<ENDL<cout<<ENDL<for(i=0;isortByName(staff,size);cout<<ENDL<<ENDL<for(i_0;icout<return0;{[24分]
  • 3. 请使用VC6或使用【答题】菜单打开考生文件夹prosS下的工程pr093,其中包含了类TaxCaleulator(“个税计算器”)和主函数main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表:利用这个税率表创建“个税计算器”时,假定起征额为2000元(即不超过2000元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数getTaxPayable,其中的参数income为月收入。此程序的正确输出结果应为:月收入为800元时应缴纳个人所得税0元月收入为l800元时应缴纳个人所得税0元月收入为2800元时应缴纳个人所得税55元月收入为3800元时应缴纳个人所得税l55元月收入为4800元时应缴纳个人所得税295元月收入为5800元时应缴纳个人所得税455元注意:只能在函数9etTaxPayable中的“//**********333**********”和“//**********666**********”之间填人若干语句,不要改动程序中的其他内容。//TaxCalculator.h#include#includeusingflamespacestd;classTaxCalculator{public:TaxCalculator(doublethe—limits[],doublethe_rates[],intthe—length,doublethe_threshold):lower_limits(newdouble[the_length]),rates(newdouble[the—length]),list_len(the_length),threshold(the—threshold){for(inti=0;i=0){//**********333**********//**********666**********--i;}returntax_payable;}voidTaxCalculator::showTaxPayable(doubleincome)const{cout<<”月收入为”<<SETW(6)<<INCOME<<”元时应缴纳个人所得税”&NBSP;&NBSP;&NBSP;<<setw(4)<<getTaxPayable(income)<<”元”<}//main.cpp#include”TaxCalculator.h”intmain(){doublelimits[]={0.0,500.0,2000.0,5000.0,20000.0,40000.0,60000.0,80000。0,100000.0};doublerates[]={0.05,0.1,0.15,0.2,0.25,0.3,O.35,0.4,0.45};TaxCaleulatorcalc(1imits,rates,9,2000.0);calc.showTaxPayable(800.0);calc.showTaLPayable(1800.0);cale.showTaxPayable(2800.0);calc.showTaxPayable(3800.0);calc.showTaxPayable(4800.0);eaie.showTaxPayable(5800.0);writeToFile(””);return0;}[18分]
  • 4. 有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;};classPian0:publicInstrument}public:voidDisplay(){/*函数体略*/}};intmain(){InstrumentS;Instrument*P=0://…;return0;}下列叙述中正确的是()。[1分]

    A语句“Insturment*P=0;”编译时出错

    B语句“Instnunents;”编译时出错

    C类Pian0中的Display函数不是虚函数

    D类Instrument是一个虚基类

  • 5. 为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。[1分]

    A内联函数

    B重载函数

    C递归函数

    D函数模板

  • 6. 下列情况中,不会调用拷贝构造函数的是()。[1分]

    A用一个对象去初始化同一类的另一个新对象时

    B将类的一个对象赋值给该类的另一个对象时

    C函数的形参是类的对象,调用函数进行形参和实参结合时

    D函数的返回值是类的对象,函数执行返回调用时

  • 7. 类的析构函数的作用是()。[1分]

    A一般成员函数的初始化

    B类的初始化

    C对象的初始化

    D删除类创建的对象

  • 8. 有如下语句序列:Charstr[10];Cin>>str;当从键盘输入“Ilovethisgame”时,str中的字符串是()。[1分]

    A”Ilovethisgame”

    B”Ilovethi”

    C”Ilove”

    D”I”

  • 9. 模板对类型的参数化提供了很好的支持,因此()。[1分]

    A类模板的主要作用是生成抽象类

    B类模板实例化时,编译器将根据给出的模板实参生成一个类

    C在类模板中的数据成员都具有同样类型

    D类模板中的成员函数都没有返回值

  • 10. 有如下程序:#includeusingnamespacestd;classPair{intm,n;public:Pair(intj,intk):m(j),n(k){}intget(){returnm;}intget()const{returnm+n;}};intmain(){Paira(3,5);constPairb(3,5);tout<<A.GET()’<returnU:}执行这个程序的输出结果是()。[1分]

    A33

    B38

    C83

    D88

  • 11. 有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。[1分]

    A自然连接

    B

    C投影

    D

  • 12. 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是()。[1分]

    AValueoperator+(Valuev,inti);

    BValueoperator+(Valuev=value,inti);

    CValueoperator+(Valuev,inl:i=0):

    DValueoperator+(Valuev=vallle,inti=0);

  • 13. 有如下程序:﹟ncludeusingnamespacestd;intmain(){int*P;*P=9:cout<<”Thevalueatp:”<<*p;return0;}编译运行程序将出现的情况是()。[1分]

    A编译时出现语法错误,不能生成可执行文件

    B运行时一定输出:l'llevalueatP:9

    C运行时一定输出:lllevalueatP:*9

    D运行时有可能出错

  • 14. 有如下程序:#includeusingnamespacestd;classBase{private:voidfunl()const{tout<<”funl”;}protected:voidfun2()const{tout<<”fun2”;}public:voidfun3()const{cout<<”fhll3”;}};classDerived:protectedBase{public:voidfhn4()const{cout<<”filn4”;}};intmain(){Derivedobj;obj.funl();//①obj.fun2();//②obj.furd();//③obj.fun4();//④returnU:}其中有语法错误的语句是()。[1分]

    A①②③④

    B①②③

    C②③④

    D①④

  • 15. 如下函数模板:templateTsquare(Tx){returnx*x;}其中T是()。[1分]

    A函数形参

    B函数实参

    C模板形参

    D模板实参

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

    A线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

    B线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

    C线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

    D线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性

  • 17. 下列运算符不能重载为友元函数的是()。[1分]

    A=()()->

    B+-++--

    C>=<=

    D+=-=*=/=

  • 18. 有如下类定义:classB{public:voidfunl(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicBjprotected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。[1分]

    Aobj.fun1();

    Bobj.fun2();

    Cobj.tim3();

    Dohj.fun4();

  • 19. 继承机制的作用是()。[1分]

    A信息隐藏

    B数据封装

    C定义新类

    D数据抽象

  • 20. if语句的语法格式可描述为:格式l:if()或格式2:if()else关于上面的语法格式,下列表述中错误的是()。[1分]

    A部分可以是一个if语句,例如if(if(a==0)…)…

    B部分可以是一个if语句,例如if(…)if(…)…

    C如果在前加上逻辑非运算符!并交换和的位置,语句功能不变

    D部分可以是一个循环语句,例如if(…)while(…)…

  • 21. 有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<’A’;}MyClass(charC.{cout<<C;}~MyClass(){cout<<’B’;}};intmain(){MyClasspl,+p2;p2=newMyClass(’X’);deletep2;return0;}执行这个程序的输出结果是()。[1分]

    AABX

    BABXB

    CAXB

    DAXBB

  • 22. 执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;--i)Cout<<'*':[1分]

    A48

    B49

    C50

    D51

  • 23. 有如下程序段:inti=0,J=1;nt&r=i;//④’r=j;//②int*P=&i;//③*P=&r;//④其中会产生编译错误的语句是()。[1分]

    A

    B

    C

    D

  • 24. 在软件设计中不使用的工具是()。[1分]

    A系统结构图

    BPAD图

    C数据流图(DFD图)

    D程序流程图

  • 25. 有如下程序:#includeusingnamespacestd;classBase{protected:Base(){cout<<’A’;}Base(charC){cout<<C;}};classDerived:publicBase{public:Derived(charC){tout<<C;}};intmain(){Deriveddl(’B’);retum0;}执行这个程序的输出结果是()。[1分]

    AB

    BBA

    CAB

    DBB

  • 26. 下列符号中能够作为C++标识符的是()。[1分]

    ACoflst

    B2a

    C_shape

    DCount

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

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

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

    C运算符函数的调用必须使用关键字operat。

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

  • 28. 当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为()。[1分]

    Aios::in

    Bios::0ut

    Cios::inIios::0ut

    D以上都不对

  • 29. 由于常对象不能被更新,因此()。[1分]

    A通过常对象只能调用它的常成员函数

    B通过常对象只能调用静态成员函数

    C常对象的成员都是常成员

    D通过常对象可以调用任何不改变对象值的成员函数

  • 30. 支持子程序调用的数据结构是()。[1分]

    A

    B

    C队列

    D二叉树

  • 31. 软件测试的目的是()。[1分]

    A评估软件可靠性

    B发现并改正程序中的错误

    C改正程序中的错误

    D发现程序中的错误

  • 32. 软件设计中划分模块的一个准则是()。[1分]

    A低内聚低耦合

    B高内聚低耦合

    C低内聚高耦合

    D高内聚高耦合

  • 33. 下列数据结构中,能够按照“先进后出”原则存取数据的是()。[1分]

    A循环队列

    B

    C队列

    D二叉树

  • 34. 有如下程序:#inCludeusingnamespaCestd;ClassBase{publiC:Base(intx=0){Cout<<X;}&NBSP;&NBSP;&NBSP;ClassDerived:publiCBase{publiC:Derived(intX=0){Cout<<X;}&NBSP;&NBSP;&NBSP;Baseval;};intmain(){Derivedd(1);return0;}执行这个程序的输出结果是()。[1分]

    A0

    B1

    C01

    D001

  • 35. 有如下程序:#inCludeusingnamespaCestd;ClassPoint{publiC:statiCintnumber;publiC:Point()t.number++;}~Point(){number--;}};,intP0int::number=0;intmain(){Point*ptr:PointA,B;Point*ptr_point=newPoint[3];ptr=ptr_point;’}PointC;Cout<<POINT:::NUMBER<<ENDL;&NBSP;&NBSP;&NBSP;delete[]ptr;return0;}执行这个程序的输出结果是()。[1分]

    A3

    B4

    C6

    D7

  • 36. 有三个关系R、S和T如下由关系R和s通过运算得到关系T,则所使用的运算为()。[1分]

    A

    B自然连接

    C笛卡尔积

    D

  • 37. 下列符号中,正确的c++标识符是()。[1分]

    Aenum

    B2b

    Cf00一9

    D_32

  • 38. 下列关于C++预定义流对象的叙述中,正确的是()。[1分]

    ACin是C++预定义的标准输入流对象

    BCin是C++预定义的标准输入流类

    CCout是C++预定义的标准输入流对象

    DCout是C++预定义的标准输入流类

  • 39. 下面的程序中,错误的语句是()。①#inClude②voidmain()③{④int*p=newint[1];⑧P=9;⑥cout<<.*P<⑦delete[]p;⑧}[1分]

    A

    B

    C

    D

  • 40. 下面有关for循环的正确描述是()。[1分]

    Afor循环只能用于循环次数已经确定的情况

    Bfor循环是先执行循环体语句,后判断表达式

    C在for循环中,不能用break语句跳出循环体

    D在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

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

    A算法就是程序

    B设计算法时只需要考虑数据结构的设计

    C设计算法时只需要考虑结果的可靠性

    D以上三种说法都不对

  • 42. 由于常对象不能被更新,因此()。[1分]

    A通过常对象只能调用它的常成员函数

    B通过常对象只能调用静态成员函数

    C常对象的成员都是常成员

    D通过常对象可以调用任何不改变对象值的成员函数

  • 43. C++中的模板包括()。[1分]

    A对象模板和函数模板

    B对象模板和类模板

    C函数模板和类模板

    D变量模板和对象模板

相关试卷
相关题库