还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2023年福建省宁德市全国计算机等级考试C++语言程序设计测试卷(含答案)学校:班级:姓名:考号:
一、
1.选择题(10题).在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()A.概要设计B.详细设计C.可行性分析D.需求分析.为了提高测试的效率,应该()oA.随机选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划D.集中对付那些错误群集的程序.由于常对象不能被更新,所以()A.利用常对象可以调用任何不改变对象值的成员函数B.利用常对象只能调用静态成员函数C.常对象的成员都是常成员D.利用常对象只能调用它的常成员函数.以下选项中,不能正确赋值的是()A.charsl
[10];sl=Ctest;#includeiostream.h#includeclassRectpublic:RectintIintw{length=l;width二w;voidPrint{coutArea:length*widthendl;}voidoperatordeletevoid*p{freep;}private:intlengthwidth;;voidmainRect*p;p=newRect54;p-PrintQ;deletep;
四、程序改错题10题
36.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件l.txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面°试题程序#includeiostream#includefstreamII********error********usingstd;voidWriteFilechar*sofstreamoutl;II********error********outl.openl.txtbinary|app;forinti=0;s[i]!=0;i++//********error********outl.putss[i];}outl.close;voidClearFileofstreamoutl;outl.openl.txt;outl.close;intmainchars
[1024];ClearFile;coutpleaseinputastrin9endl;cin.getlines1024;WriteFile⑸;returnO;.使用VC+4-
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******eircr******的下面,修改该语句即可试题程序#includeiostream.hclassTC{inti;public:TC;voiddisplay;〜TC;;I/******Q|r|-Q|r******TC TCcoutConstructor1^;i二0;//******errcr******TC displaytouti=iendl;//******error******TC TCCOUIDestructorendl:voidmainTCa;a.display;}.使用VC++
6.0打开考生文件夹下的源程序文件
1.CPP,该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件Ltxt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream#includefstream//********error********usingstd;voidWriteFilecharts{ofstreamoutl;//********error********outl.open〃l・txt〃binary|app;forinti=0;s[i]!=0;i++{//********eiror********outl.putss[i];outl.close;voidClearFile{ofstreamoutl;outl.open/zl.txt〃;outl.close;}intmainchars
[1024];ClearFile;cout,zpleaseinputastrin9〃〈Vendl;cin.getlines1024;WriteFiles;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostreamhintmain{trythrowerror;//********error********catchcharscoutsendl;trythrowint0;}//********eiror********catchcoutiendl;try{throw0;throwerror;//********error********catchcout«zzERROR/z«endl;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件Lcpp该程序运行时有错请改正程序中的错误,使程序输出的结果为1003732注意错误的语句在//******error******的下面,修改该语句即可试题程序#includeiostream.h//******errcr******voidmain{//******error******intm=0142//******errcr******intn=0X27intq=32;coutmendl;coutnendl;coutqendl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeofSl二5sizeofs2=10sizeofs3=l注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面1不能删除assert语句⑵只能修改后面的数字提示assert函数如果为假,则会产生一个中断异常试题程序#includeiostream.h#includeassert.hvoidmainchar*sl=abc:II********error********assertsizeofsl==3coutsizeofsl=5endl;chars2
[10]=ab//********error********assertsizeofs2==2;coutsizeofs2=10endl;chars3=23II********error********assertsizeofs3==4;coutsizeofs3=lendl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面°试题程序#includeiostream.hvoidmain{inti=0;charstr
[120];coutEnterastringendwith.endl;//********error********cin.getlinestr120;//********QP^Qf********whilestr//********Q********ifstr[i]=astr[i]=str[i]-a+A;i++;coutstrendl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cppo本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时、默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hvoidmaininti=0;charstr
[120];cout,,Enterastringendwith./zendl;//********error********cin.getlinestr120;//********error********whilestr{//********error********ifstr[i]=astr[i]=str[i]-a+A;i++;coutstrendl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误,使得程序输出98765注意错误的语句在]a火火error大a大I的下面,修改该语句即可其他的语句不能修改试题程序#includeiostream.hclassTC/********error********/TCinti{m_i=i;voidprintcout--m_i;}public intmj;;intmain/********error********inti;TC0410;whilei5/********errOr********/i++
04.print;coutendl;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=lnumber=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******error******的下面°试题程序#includeiostream.hclassTCpublic TCintinumber二i;voidSetNumberintmnumber=m;intGetNumberconstreturnnumber;voidPrintconstcoutnumber=numberendl;private:intnumber;;voidmainII********error********TCobjl;objl.Print;TCobj23;//********error********objl.number=10;//********error*%******TC.SetNumberlOO;objl.Print;obj
2.Print;
五、综合应用题2题.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义的类不完整,按要求完成下列操作,将类的定义补充完整⑴定义类的公有数据成员函数NO、Name
[32]其中NO是int型的数据,Name
[32]为字符型请在注释1后添加适当的语句⑵完成函数Set的定义,分别设置NO和Name的值,请在注释2后添加适当的语句⑶完成函数print请在注释3后添加适当的语句,输出结果如下N0=12345Name=He11oWor1d!4添加默认构造函数,设置NO为3Name为空,请在注释4后添加适当的语句注意增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码试题程序#includeiostream.hclassTCpublic//|vjx/✓TxxTxxtxxTxxtxI✓TxxjxxrxxjxxTxxjx///不不不不不不不不乙不不不不不不不不No=no;forinti=O;strName[i]!=0;i++{Name[i]=strNaine[i];Name[i+l]=0;}voidprint//JkLz/不不不不不不不不J不不不不不不不不TCII********4********intmainTCstu stu.Set12345“HelloWorld!〃;stu.print;returnO;}.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3其中声明的DataList类,是一个用于表示数据表的类DataList的重载运算符函数Operator+其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和请编写这个operator+函数程序的正确输出应该是两个数据表123456345678两个数据表之和468101214要求补充编制的内容写在“〃********333********”与*//********666*********之间,不得修改程序的其他部分注意程序最后将结果输出到文件ut.dat中输出函数writeToFile已经编译为bj文件,并且在本程序中调用//DataList.h#inCludeiostreamusingnamespaCestd;ClaSSDataList{〃数据表类intfen;double*d;public DataListintlendoubledata口=NULL;DataListDataListdata;intlengthConst{returnlen;doublegetElementintiConsttreturnd[i];}B.chars2[]={C;t;e7s;t};C.chars3
[20]=nCtestn;D.chars4=nCtest\nn;.两个或两个以上模块之间联系的紧密程度称为0A.耦合性B.内聚性C.复杂性D.数据传输特性.类模板templateclassTclassx{...}其中友元函数f对特定类型T如int使函数fxint=成为xint模板类的友元,则其说明为oA.friendvoidf B.friendvoidfxT=;C.friendvoidA::fD.friendvoidCT::fxT=;.在结构化方法中,软件功能分解属于下列软件开发中的阶段是oA.详细设计B.需求分析C.总体设计D.编程调试.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是A.概要设计B.详细设计C.可行性分析D.需求分析.C++语言中,表示一条语句结束的标号是A.#B.;C.//D.}DataListoperator+ConstDataListlistConst;//两个数据表求和voidshowConst;〃显示数据表};voidwriteToFileChar$ConstDataList;//main.Cpp#inClude”DataList.h”DataListDataListintlendoubledata[]lenien{d二newdouble[len];forinti=0;ilen;i++d九data二二NULL.0data[i];DataListDataListDataListdata lendatalen{d=newdouble[len];forinti=0;ilen;i++d[i]=data.d[i];DataListDataListOperator+Con8tDataListlistConst{〃两个数据表求和double*dd=newdouble[listlensth];〃********333********//********666********returnDataListlistlengthdd;}voidDataListshowConst{//显示数据表frinti=0;ilen-l;i++eoutd[i]n;Coutd[len-l]endl;intmain{doublesi[]={L23456};doubles2[]={345678};DataListlistl6silist26s2;〃定义两个数据表对象eout《”两个数据表”〈endl listl.show list
2.show;eoutendlv两个数据表之和”〈〈endl listl+list2show;writeToFilev“,listl+list2;return0
六、3综合应用题2题
48.使用VC6打开考生文件夹下的工程test25_3此工程包含一个源程序文件test25_
3.cpp其中定义了用于表示堆的类Set但它的定义并不完整请按要求完成下列操作,将程序补充完整⑴完成成员函数intIsMemberOfQntn的定义,该函数检查参数n是否在类的数据成员数组elems中,如果在返回1反之返回0请在注释7/**1**”之后添加适当的语句⑵完成成员函数intAddintn的定义,如果参数n包含在类的数据成员数组elems中则返回1如果数组超界则返回0如果都不是,则将参数n插入到elems中,下标大小为类的数据成员PC之后PC自加一请在注释“〃**2**之后添加适当的语句⑶完成拷贝初始化构造函数SetSets的定义,请在注释“〃**3丑”之后添加适当的语句输出结果如下10{
1234567.8}注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件test25_
3.cpp清单如下#includeiostream.hclassSetpublic Set{PC=O;}SetSets;voidEmpty{PC=O;}intIsEmptyO{returnPC==O;}intlsMemberOfintn;intAddintn;voidPrint;private:intelems
[100];intPC;;intSet::lsMemberOfintn//**1**ifelems[i]==nreturn1;returnO;intSet::Addintn//**2**return1;elseifPC=100returnO;elseelems[PC++]=n;return1;}}Set::SetSetsforinti=O;iPC;i++elems[i]=s.elems[i];voidSet::Print{coutforinti=O;iPC-l;i++coutelems[i]ifPCOcoutelems[PC-l];cout}endl;voidmainSetA;coutAIsEmptyOendl;A.Print;SetB;forinti=l;i=8;i++B.Addi;B.Print;
49.使用VC6打开考生文件夹下的工程test26_3此工程包含一个test26_
3.cpp其中定义了类queue但该类的定义并不完整请按要求完成下列操作,将程序补充完整⑴完成类queue的无参数的构造函数的定义,要求把数据成员bl和el都初始化为0同时输出queueinitialized请在注释7/**l**n之后添加适当的语句⑵完成类queue的成员函数qputintj的定义,它的功能是把新的元素加入队列,过程是先依据bl的值判断数组是否已经满了,如果是就输出queueisfull否则bl自加一,并且把参数j的值存入bl指向的数组元素中,请在注释“〃**2**”之后添加适当的语句⑶完成类queue的成员函数qget的定义,它的功能是把队列开头的元素提取出队列,并返回该值,过程是先比较el和bl的值判断队列是否已空,如果是就输出queueisempty否则el自加一并且把el指向的数组元素返回,请在注释“〃**3**”之后添加适当的语句程序输出结果如下queueinitializedqueueinitialized33114422注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件test26_
3.cpp清单如下#includeiostream.hclassqueueintq
[100];intblel;public queue;voidqputintj;intqget;;queue::queue//**]**voidqueue::qputintj//**2**{coutqueueisfull\n;return;bl++;q[bi]=j;intqueue二qget//**3**coutqueueisempty\n;return0;el++;returnq[el];voidmainqueueaabb;aa.qputll;bb.qput22;aa.qput33;bb.qput44;coutaa.qgetaa.qgetcoutbb.qgetbb.qgetl.D通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期也就是说软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期软件生命周期的主要活动阶段为
①可行性研究和计划制定确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划
②需求分析对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能编写软件,规格说明书及初步的用户手册,提交评审
③软件设计系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程
④软件实现把软件设计转换成计算机可以接受的程序代码即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划
⑤软件测试在设计测试用例的基础上,检验软件的各个组成部分编写测试分析报告
⑥运行和维护将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改
2.D本题主要考查软件的测试软件测试的主要目的体现在下面几个方面1软件测试是为了发现错误而执行程序的过程2一个好的测试用例能够发现至今尚未发现的错误3一个成功的测试是发现了至今尚未发现的错误的测试软件测试的效率是指利用更少的成本创造更多的价值,提供软件测试效率的方法有很多,如制定一个合理的详细的测试计划,了解测试项目的业务需求,集中对付那些错误群集的程序等而选项A所描述的随机选取测试数据是不能保证提高测试效率的,选项B描述的取一切可能的输入数据作为测试数据显然不能提高测试效率反而使工作量加大,降低测试效率
3.D解析如果一个成员函数没有声明为常成员函数,即使没有改变对象本身的成员值,也不能被常对象调用,所以A不正确常对象除了口J以调用静态成员函数外,还可以调用常成员函数,所以B不正确常对象中可以有非常成员函数,所以C也不正确常对象只能调用对象的常成员函数,而不调用普通成员函数,故D选项正确,
4.A
5.A解析耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最内聚性是从功能角度来度量模块内的联系•耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系
6.B7c解析软件系统结构的总体设计包括基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面详细设计的任务是在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望需求分析的任务是发现需求、求精、建模和定义需求,通常包括功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等编程调试的任务是诊断和改正程序中潜在的错误综上所述软件功能分解只能发生在总体设计阶段
8.D解析在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题本题的正确答案为Do
9.B解析C++语言中语句的结束符是分号.A开发大型软件时,产生困难的原因有很多,如需求难以捕捉、员工水平有限、工作安排不太合理、进度控制难以把握、系统开发时间有限等元素,但这些都不是根本的原因,根本的原因是大系统的复杂性.AAo【解析】选项A中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫不相干的函数;重载函数中编译是根据参数表进行选择的,包括参数的个数和类型
2.B解析数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点一多态性.A开发大型软件时,产生困难的原因有很多,如需求难以捕捉、员工水平有限、工作安排不太合理、进度控制难以把握、系统开发时间有限等元素,但这些都不是根本的原因,根本的原因是大系统的复杂性.C本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用基类的析构函数
15.B解析本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加inline关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数.C解析本题考核函数的声明和调用定义一个函数就是为了以后的调用,但如果函数定义在后面而调用在前,就会产生编译错误为此,必须将函数定义在前或在调用前进行“函数的说明”函数说明消除了函数定义的位置影响C选项的描述是正确的函数可以没有参数,可以没有返回值递归函数就是自己调用自己所以A、B和D选项的描述都是错误的.CCo【解析】内联函数不是定义在另一个函数体内部的函数,而是将inline放在函数定义中函数类型之前;函数体的最后一条语句可以是任意的语句;编译器不会根据函数返回值的类型来区分重载形式,选项D错误标准C++要求在调用一个函数之前,必须先声明其原型
18.BB.【解析】栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的进行插入、删除的一端称为栈顶,封闭的一端称为栈底栈顶元索是最后被插入的元素,也是最后被删除的元素栈是按先进后出的原则组织数据的【知识拓展】“栈”的形式如手枪的弹匣,最后压入的子弹总是最先被弹出,而最先压人的子弹最后才被弹出,也就是“先进后出”
19.CCo【解析】基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl是虚函数;而类A中的func2没有被关键字virtual修饰;所以不是虚函数
20.A\nAo【解析】从循环语句中可以看出,是在到4的循环中输出数组a中的前5个元素,输出的值为*P+i即为指针P向后移动指向的元素所以初始化要将指针P指向数组a即int*p=a;o
21.C
22.CCo【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义
23.B本题主要考查了常对象和常成员函数使用const关键字修饰的对象称为常对象,使用const关键字说明的成员函数称为常成员函数由于常对象不能被更新,因此,在将一个对象说明为常对象后,通过这个常对象只能调用它的常成员函数,而不能调用其他成员函数一般对象既可以调用常成员函数,也可以调用一般成员函数选项B中对象a为常对象,而成员函数SetDataO不是常成员函数,所以这样调用会发生编译错误24输出输出解析软件测试用例是为了有效地发现软件缺陷而编写的包含测试目的、测试步骤、期望测试结果的特定集合正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性软件测试用例包括输入值集和输出值集测试用例是软件测试的核心.privateprivate解析此题考查的是类的继承方式类的继承方式有公有、保护和私有三种分析题目可以得到,若横线处填入的是private即类Derived1私有继承类Base将导致objD.m和objD.n出错,符合题目要求.Derived=0Sample=9Derived=0Sample=9解析本题考察派生类和基类的构造函数,析构函数的执行顺序
27.0n.x!=yx!=y解析此题考查的是类的构造函数和析构函数首先,“Samplesl23;“会调用含有两个参数的构造函数MSampleintaintb{x=a;y=b1disp函数输出成员变量x和y的值x=2y=3;然后结束时调用析构函数,因为x和y值不等,故输出x!二y.采用顺序存储结构且元素按值有序采用顺序存储结构,且元素按值有序.对象对象解析在面向对象概念中,所有的同类的实体的抽象就构成一个类,而类被实例化就形成一个对象.xxxxxHelloxxxxxHello解析此题考查的是I/O的格式化输出Setfillx表示填充字符为V并且一直有效;setw10表示将输入输出的宽度设置为10宽度设置的效果只对以此次输入或输出有效在完成一个数据的输入或输出后宽度自动恢复为0题目中字符串“Hello”的宽度不够10所以其前面将有5个填充符V.构造构造解析此题考查的是构造函数的应用构造函数的作用是在对象被创建时利用特定的值构造对象,构造函数在对象被创建时由系统自动调用.不能不能34i=3i=3解析本题考察考生的for语句和if语句综合使用能力本题的情况适用于希望在满足指定值时停止循环的情况.Area20Area20解析:此题考查的是内存空间的分配和释放,即free和delete函数的应用使用new对某种类型的变量进行动态分配的语法格式为指针二new类型•使用delete对动态分配的变量进行释放是delete指针此题中,首先为变量分配内存单元,然后执行语句p-Print;输出Area20然后利用delete释放内存单元.⑴应改为usingnamespacestd;\n2应改为outl.openl.txtios:binary|ios::app;n\n⑶应改为“outl-puts[i];Ho\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为Uusingnamespacestd;no第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以Uoutl.open1l.txtbinary|app;”语句缺少类ios即第2处的语句修改为Uoutl.open1l.txtiosbinary|iosapp;”第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为Uoutl.puts[i];”.⑴应改为“TCTCo\n2应改为voidTCdisplay”\n⑶应改为“TC~TC”o\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“作用域运算符用采表示某个成员属于哪个类,使用格式为“类名〈成员函数〉参数函数,因此第1处应改为“TCTC”,默认构造函数没有参数由第2处“TCdisplay后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTC::display”由第3处的语句HTC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC~TC”o.1应改为^usingnamespacestd;2应改为“outl・open〃l・txt〃iosbinaryIiosapp;3应改为“outl.puts[i];o【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“outl.openCl.txt〃,binaryIapp;”语句缺少类ios即第2处的语句修改为“outl.open〃l.txt〃,iosbinaryIiosapp;”第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“outl.puts[i];o.1应改为catchchar*s”2应改为catehinti”3应改为catch…”【解析】本题中第1个标识前的异常抛出语句为“throw〃error〃;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句catchchars是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为“throwint0;”,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号表示它可以捕捉任何类型的异常信息即修改为catch•••o.1“voidmain”uintm=0144;”“intn=0X25;”或“intn==0x25;”【解析】本题主要考查了主函数定义及嘉同进制之间的转换,包括十进制到八进制,十进制到十六进制主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144卡进制的37对应十六进制的25因此2和3应分别改成“intm=0144;,intn=0X25;”或“intn=0X25;”.⑴应改为uassertsizeofsl==4;”\n⑵应改为4assertsizeofs2==lO;H\n⑶应改为uassertsizeofs3==1;\n【解析】assert函数如果为假,则会产生一个中断异常所以要让它正常执行输出结果那么assert函数只有为真,才不会产生中断异常“assertsizeofsl二二3;”语句中usizeofsl==3为假,这会使程序产生异常,不能正常执行因为strl的值为abc但是它还有一个尾符,它的长度应该是4而不是3所以在第1处修改为uassertsizeofsl==4;str2
[10]说明str2的空间为10在第2处修改为uassertsizeofs2==10;”charstr3=23;语句说明23是字符,所占存储空间为1所以修改为uassertsizeofs3==1;”.⑴应改为“ein.getlinestr120;n\n⑵应改为uwhilestr[i]no\n⑶应改为uifstr[i]=astr[i]=2no\n【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数,终止标志字符”,所以第1处改为ucin.getlinestr120;”第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifstr[i]=a”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为uifstr[i]=astr[i]=zno.1应改为“ein.getlinestr120;2应改为whilestr[i]n03应改为ifstr[i]=astr[i]=2no【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数,终止标志字符,所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为whilestr[i]vo第3处的ifstr[i]=a语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为ifstr[i]=astr[i]=zo.⑴应添加“public:o\n⑵“inti”应改为“inti10;”\n⑶“i++;”应改为“i—;”\n【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保护和私有3种而默认的访问属性为私有,只有公有成员才能通过类的对象被访问故应在构造函数前添加“public”,否则该类无法被实例化变量的初始化可以通过“二”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出5个数,while的循环变量i每次减L在5时循环,故i初始化应为10若循环中i每次增L则循环永远不会退出
45.⑴应改为uTCobjll;Mo\n⑵应改为“Objl.SetNumberlO;n\n⑶应改为“0bj
2.SelNumberlOO;no\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl根据TC类构造函数的定义TCinti存在整型参数,并且题目要求第一个输出结果两£所以补全参数L即第1处的“TCobjll;”第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值在C++中成员函数的使用形式应该是对象名.成员函数,所以修改为uobjl.SetNumberlO;n类是对象的抽象,而对象是类的具体实例第3处“TC.SetNumberlOO;”语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2所以将语句修改为Mobj
2.SetNumberlOO;no.1应添加“intNo;charName
[32];”2应添加uvoidSetintnochar*strNameo3应添加“cout〈〃No=〃〈〈NoVVendlVVNanieiVVNanieVVendl;4应添力口“No=Name
[0]=0;”【解析】第1处要求“定义类的公有数据成员函数NO、Name
[32]其中NO为int型,Name
[32]为字符型”在已有程序中类定义的public区域,定义变量NOName
[32]即在第1处添加语句“intNO;charName
[32];第2处要求“完成函数Set的定义,分别设置No和Name的值”在第2处说明函数Set的语句中,应该包括变量nostrName的定义,然后在函数中将其值赋值给NOoName即添加定义语句uvoidSetintnochar*strNamevo第3处要求“完成函数print”,根据输出结果,知道输出的是No和Name的值,所以这里补全“cout〈〈〃No=〃No〈〈endl〈〈〃Name=〃Nameendl;第4处要求.开发大型软件时,产生困难的根本原因是()A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重
二、单选题(13题).下列对重载函数的描述中,错误的是()oA.重载函数中不允许使用默认参数B.重载函数中编译是根据参数表进行选择的C.不要使用重载函数来描述毫不相干的函数D.构造函数重载将会给初始化带来多种方式.下面关于C++语言的描述错误的是()A.C++语言支持数据封装B.C++语言中引入友元,没有破坏封装性CC++语言允许函数名和运算符重载D.C++语言支持动态联编.开发大型软件时,产生困难的根本原因是()A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重.下面程序的运行结果为()“添加缺省构造函数,设置No为0Name为空”,即在TC构造函数中补充赋值语句aNo=Name
[0]=0;”.fOTinti=0;ilen;++i〃遍历对象list中的数组和d数组把对应的值相加后放到数组dd中dd[i]=d[i]+list.d[i];.1forinti=O;iPC;i++⑵iflsMemberOfn3PC=sPC;l\r\nforinti=O;iPC;i++\r\n2\r\niflsMemberOfn\r\n3\r\nPC=s.PC;解析本题主要考查考生对于类的成员函数的定义和拷贝初始化函数的理解.1bl=el=O;coutqueueinitialized\n;2ifbl==1003ifel==bll\r\nbl=el=O;\r\ncoutqueueinitializedWn;\r\n2\r\nifbl==100\r\n3\r\nifel==bl解析:主要考查考生对于具体的一个队列类的掌握,对列是一种特殊的存储结构,使用先进先出原则,题目中bl和el分别指向队列的开头和结尾,其中⑵是队列的标准插入操作,3是队列的标准的删除操作,注意它们的操作方式和先判断后操作的原则#includeiostream.hclassA(public A{tout«r;}-A{tout«2;}};classB publicA(public B{cout«3;}〜B{coutvv4;)};voidmain(Bb;)A.1234B.1324C.1342D.
3142.下列说法正确的是()A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字inline定义.下列关于C++函数的叙述中,正确的是A.每个函数至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明D.函数不能自己调用自己.下列关于C++函数的说明中,正确的是A.A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是return语句C.标准C++要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值数型和参数表来区分函数的不同重载形式.按照“先进后出”原则组织数据的数据结构是A.队列B.栈C.双向链表D.二叉树.对于类定义classA{public virtualvoidfuncl{}voidfunc2{}};classB publicA{public voidfunci{coutnclassBfunclnendl;}virtualvoidfunc2{coutnclassBfunc2nendl;};下面正确的叙述是A.Afunc2和Bfund都赵虚函数.Arune2和Bfuncl都不是虚函数C.Bfuncl是虚函数,而Afune2不是虚函数D.Bfuncl不是虚函数,而Afunc2是虚函数.程序中有语句forinti=0;i5;i++cout«*p+i«n”;能够依次输出血型一维数组a的前5个元素由此可知,变量P的定义及初始化语句是A.int*p=a;B.intp=a;C.np=a;D.p=a;.函数模板templateclassTTaddTxTy{returnx+y;}下列对add函数的调用不正确的是A.add12B=addint12C.add
1.02D.add
1.
02.
0.有如下函数模板定义templateTlFUNT2n{retumn*50;}若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为A.FUN9B.FUN9C.FUN9D.FUN9double.有如下类定义和变量定义classApublic:A{data=O;}〜A{}intGetDataOconst{returndata;}voidSetDataintn{data=n;}private:intdata;;constAa;Ab;下列函数调用中错误的是oA.a.GetDataO;B.a.SetDatalO;C.b.GetDataO;D.b.SetDatalO;
三、
2.填空题12题.测试用例包括输入值集和值集.有如下程序#includeiostreamusingnamespacestd;classBase{public;intmn;;classDerivedl:Base;classDerived2:publicDerivedl{public:voidSetMNintMintN{m=M;n=N;}intGetSumMN{returnm+n;};intmain{Derived2objD;objD.SetMN34;coutM+N=objD.m+bojDnendl;return0:编译时只有“coutM+N=objD.m+bojD.nendl;n有语法错误,程序的其他地方没有语法错误,请判断横线处使用的关键字是O.下列程序的运行结果是o#includeiostream.hclassSampleinta;public:Sampleintaa=0{a=aa;}〜Sample{cout〜Sample=a;classDerived:publicSampleintb;public:Derivedintaa=0intbb=O:Sampleaab=bb;}〜Derived{coutDerived=b;voidmainDeriveddl9;.冒泡排序在最好情况下时间复杂度为【】.执行以下程序,输出结果的最后一行语句是#includeiostream.hclassSample{intxy;public:Sample{x=y=O;}Sampleintaintb{x=a;y=b;}〜Sample{ifx--ycoutx!=yendl;elsecoutx!=yendl;}voiddispcoutx=xy=yendl;:voidmainSamplesl23;sl.disp;}.对线性表采用折半查找法,该线性表必须【】.在面向对象方法中,类的实例称为o.下列程序的执行结果是o#includeiostream.h#includeiomanip.husingnamespacestd;voidmainOcoutsetfillxsetw10;coutHelloendl;}.在类的对象被创建时,函数会被自动调用.cerr与cout的差别在于cerr是重定向的,cerr不能被缓冲,它的输出直接传达到标准输出设备上.下列程序的运行结果为#includeiostream.hvoidmaininti;fori=l;i6;i++ifi==3break;couti=iendl;.下面程序运行时输出结果为一。