还剩41页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2021年山东省烟台市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:班级:姓名:考号:
一、
1.选择题(10题).在软件测试设计中,软件测试的主要目的是()A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.发现软件错误而执行程序.下面各派生类的定义中,正确的是()A.classA{<类的成员>};classB:Apublic{〈类B中新增的成员>);B.classA{〈类的成员〉};privateclassB:A{〈类B中新增的成员>);C.classA{<类的成员>};classB:protectedA{〈类B中新增的成员>);D.classA{<类的成员>};classB:A{〈类B中新增的成员>);.C++语言类体系中,不能被派生类继承的有()A.转换函数B.构造函数C.虚函数D.静态成员函数.下列不属于结构化分析的常用工具的是A.数据流图B.数据字典C判定树D.PAD图.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较inti;TC0410;whilei5I****************Ii++
04.print;cout«endl;returnO;
37.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******errcr******的下面,修改该语句即可试题程序#includeiostream.hclassTCinti;public TC;voiddisplay;〜TC;};Ii******error******TC TC{cout«Constructor«,;i=0;Ii******error******TC displaytout«ni=«i«,«endl;}Ii******error******TC TC{2OUI«nDestructorn«endl}voidmainTCa;a.display;}cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件
1.txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在******e1Tor******的下面试题程序#includeiostream#includefstream/I********error********usingstd;voidWriteFilechar*sofstreamoutl;II********error********outl.opennl.txtbinary|app;forinti=0;s[i]!=0;i++II********enxr********outl.putss[i];outl.close;}voidClearFileofstreamoutl;outl.openHl.txt;outl.close;intmainchars
[1024];ClearFile;cout«npleaseinputastrin9n«endl;cin.getlines1024;WriteFiles;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=1number=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******emr******的下面试题程序#includeiostream.hclassTCpublic TCintinumber=i;voidSetNumberintmnumber=m;intGetNumberconstreturnnumber;voidPrintconstcout«number=H«number«endl;private intnumber;voidmain//kL*vt*•»1**1*vl*/不不不不不不不不error不不不不不不个个TCobjl;objl.Print;TCobj23;II********enor********objl.number=10;Ii********enor*^oo******TC.SetNumberlOO;objl.Print;obj
2.Print;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******eircr******的下面试题程序#includeiostream.hvoidmaininti=O;charstr
[120];cout«nEnterastringendwith.n«endl;/不不不不不不不不error不不不不々,不不不cin.getlinestr120;***个个个个个个个个^^nor个个小个个个个个whilestrkL*£个个个个个个个个^^nor个个个个个个个个ifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeofSl=5sizeofs2=10sizeofs3=l注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面⑴不能删除assert语句⑵只能修改后面的数字提示assert函数如果为假,则会产生一个中断异常试题程序#includeiostream.h#includeassert.hvoidmainchartsl=nabcn/不不不不不不不不error不小小不不不不不assertsizeofs1==3:cout«nsizeofsl=5n«endl;chars2
[10]=nabn:assertsizeofs2==2;cout«nsizeofs2=10n«endl;chars3=23assertsizeofs3==4;cout«nsizeofs3=ln«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确程序输出88注意错误的语句在/********error********/的下面修改该语句即可,其他的语句不能修改试题程序#includeiostream.hclassCOpublic staticintn=O con++〜co}:I********error********/intCOn;voidmainCOobj;COobj2
[7];CO*C二NULL c=obj I********error********/eout«C.n«endl;cout«C0n«endl;}.使用VC++
6.打开考生文件夹下的源程序文件
1.Cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在******eno1******白勺|^*j自jo试题程序:#includeiostream#includefstreamkL*kI*个个个个个个个个^^nor不不不不不不不个usingstd;voidWriteFilechar*sofstreamoutl;vt*kI*vt*kL*个个个不不不不不个个不不不不不不outl.opennl.txtbinary|app;forinti=0;s[i]!=0;i++kL*kL*kL*个个小个个个个不不不不不不不不不outl.putss[i];outl.close;voidClearFileofstreamoutl;outl.opennl.txt”;outl.close;}intmain次数中正确的是0A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为nn-l/
2.下列叙述中错误的是A.二又树不是线性结构B.线性表是非线性结构C.线性链表是线性结构D.栈与队列是线性结构.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C关系中的每一列称为元组,一个元组就是一个字段D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是#includeiostream.hvoidmain{inti=0jk;do{i++;k=316-13*i;}while;j=k/ll;cout316=13*i+H*j;}A.k/11B.k%llC.k/ll==0D.k%ll==0下列关于纯虚函数与抽象类的描述中,错误的是A.纯虚函数是一种特殊的虚函数,它没有具体的实现chars
[1024];ClearFile;cout«npleaseinputastrin9n«endl;cin.getlines1024;WriteFiles;returnO;}.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为errorOERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hintmaintrythrowerror;/不不不不个不不不error不不小不不不不不catchcharscout«s«endl;trythrowint0;si*vl*个个个个个个个个^^rror个个个个个个个个catchcout«i«endl;trythrowO;throwerror”;}/不不不不不不不不error不不不不不不不不catchcout«nERRORn«endl;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream.hintmainthrownerrorn;个个个个个个个个个个个个个个个个catchcharscout«s«endl;trythrowint0;个个个个小个个个^^nor个个小个个个个个catchcout«i«endl;trythrowO;thrownerrorn;//7,77/不不不不不不不不error不不小不不不不不catchcout«nERRORn«endl;}returnO;
五、综合应用题2题.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义了用于表示矩形的CRect类,但类CRect的定义并不完整请按要求完成下列操作,将类CRect的定义补充完整1定义私有数据成员leftPointtopPoint、rightPointbottomPoint分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据请在注释1之后添加适当的语句2完成默认构造函数CRect的定义,指定默认实参为0它们都是double型的数据请在注释2之后添加适当的语句⑶定义函数体为空的析构函数请在注释3之后添加适当的语句4在main函数中定义GReet类的实例rect2并把recti的值赋给rect2请在注释4之后添加适当的语句注意除在指定位置添加语句之外,不要改动程序中的其他内容试题程序#includeiostream.hclassCRectprivate vt*kF*vt*/vt*vl*kL*vt*vL*—卜q、^1*―卜一I、Iq、q、一卜—『«,q、-public//vt\!kJ#\!vt*■!v!/TrT«,«,7^T«、«、7]、/[、«•«、r7-j、//si**J*J*1*1vf*J*1vl*kL*vfkJkJvl*/rTwrlrr^Trrrtrj^rr^voidSetPointsdouble,doubledouble,double;voidSetLeftPointdoublem{leftPoint=m;}voidSetRightPointdoublem{rightPoint=m;}voidSetTopPointdoublem{topPoint=m;}voidSetBottomPointdoublem{bottomPoint=m;}voidDisplay;};CReetCRectdoubleldoubletdoublerdoublebleftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;voidCRectSetpointsdoubleldoubletdoublerdoublebleftPoint=l;topPoint=t;rightPoint=n;bottomPoint=b;voidCRectDisplaycout«nleft-toppointisn«leftPoint«nn«top-Point«Hn«\n;cout«fright-bottompointisn«rightPoint«n”«bottomPoint«nn«\n;voidmainCRectrectO;rectO.Display;rectO.SetPoints
2020.63040;rectO.Display;CRectrectlO0150150;recti.SetTopPoint
10.5;rect
1.SetLeftPoint
10.5;II********4********rect2Display
47.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义了类BA、PA1和PA2其中PA1类由BA类公有派生,PA2类由PA1类公有派生上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整程序输出结果如下:10510571定义类BA的构造函数,该构造函数有一个整型的参数m在构造函数中将m赋值给数据成员a请在注释1之后添加适当的语句⑵定义类PA1的构造函数,该构造函数有两个整型的参数m和n在构造函数中将m赋值给数据成员b将n作为基类BA构造函数的参数值传人请在注释2之后添加适当的语句3定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k在构造函数中请将m赋值给数据成员c将n和k分别赋值给基类PA1构造函数的参数m和no请在注释3之后添加适当的语句4完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开请在注释4之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容试题程序#includeiostream.hclassBAinta;public//vl*1vi*vl**1#vl*/Irr*rr*intgeta{returna;};classPAl publicBAintb;public//*J*JUl**i*j/«、〃、Jrjintgetb{returnb;};classPA2publicPAlintC;public//vt7^7*vtk!k!vt/—r7彳、、J、rj、、T*■[、■]、voidshowII********4********};voidmainPA2a7510;cout«a.geta«endl;cout«a.getb«endl;a.show;
六、
3.综合应用题(2题)
48.使用VC6打开考生文件夹下的工程MyProj5此工程包含一个源程序文件MyMain
5.cpp其中定义了用于表示日期的类Date但类Date的定义并不完整请按要求完成下列操作,将类Date的定义补充完成
①定义私有数据成员lengthswidth和labe1其中lengthxwidth是int型,label是类point的对象它们分别表示长方形的长、宽以及坐标点请在注释“〃**1**”之后添加适当的语句
②完成构造函数square的定义,使square对象的默认值为lengthswidthslabel00请在注释“〃**2**”之后添加适当的语句
③完成重载构造函数squareintlintwintxinty的定义,把数据成员lengthswidth和对象label分别初始化为参数象w、x和y的值,请在注释“〃**3**,,之后添加适当的语句
④完成成员函数get_area的类外定义,此函数的功能是返回此长方形的面积,及返回length*width的值请在注释“〃**4**”之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件MyMain
5.cpp清单如下//MyMain
5.cpp#includeiostreamusingnamespacestd;classpointprivate:intxy;public:voidsetintiintjx=i;y=j;intget_yreturny;;classsquare〃**]**public:〃**2**squareintIJntwintxinty〃**B**voidsetintlintwlength=l;width=w;intget_areaconstreturnlength*width;;intsquare::getareaconstsquaresmall24』35;coutsmall.get_areaendl;return0;
49.使用VC6打开考生文件夹下的工程test28_3o此工程包含一个test28_
3.cpp其中定义了类Person但该类的定义并不完整请按要B.抽象类是指具有纯虚函数的类C一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出.下列选项中不属于结构化程序设计原则的是A.可封装B.自顶向下C.模块化D.逐步求精
二、单选题13题.下列有关类成员的叙述中,正确的是A.友元函数是类的成员函数B.类成员的默认访问权限是私有的C.类成员函数必须声明为公有的D.类的静态数据成员不能是常成员
12.
25.执行语句cout《〈setfill**setw10setfill1#;left123HOKendl;后将输出.123*******OK123#######OK123###»»***OK**###**»123#######OK########
13.
21.可以用p.a的形式访问派生类对象p的基类成员a其中a是兀A.私有继承的公有成员B.公有继承的私有成员求完成下列操作,将程序补充完整⑴定义类Person的私有数据成员forename、surname和moneyforename和surname都是char型的指针数据,money是double型的数据请在注释“〃**1**”之后添加适当的语句2完成类Person的带三个参数的构造函数Personchar*fchar*sdoublem分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money请在注释“〃**2**”之后添加适当的语句3完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“〃**3**”之后添加适当的语句4完成类Person的成员函数display的定义,使其以格式“fornamesurnamehasmoney”的形式输出内容,请在注释“〃**4*”之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容输出结果如下RichardBerkhas
1000.56源程序文件test28_
3.cpp清单如下#includeiostream.h#includestring.hclassPersonprivate:〃**]**doublemoney;public:Personchar*fchar*sdoublem;〜Person;voiddisplay;;Person::Personchar*fchar*sdoublem〃**2**strcpyforenamef;surname=newchar[strlens+l];strcpysurnames;money=m;Person::-Person〃**3**voidPerson::display〃**4**voidmainPersonpnRichard\nBerk\
1000.56;p.display;参考答案LD解析使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别软件测试的目的是为了发现错误而执行程序的过程测试要以查找错误为中心,而不是为了演示软件的正确功能
2.C
3.B解析派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义.D属于结构化分析的常用工具数据流图,数据字典,判定树和判定表,PAD是详细设计的工具.DDo【解析】本题主要考查对排序算法的理解冒泡排序法首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,以此类推,直至第n-1个与第n个记录的关键字进行比较第一趟冒泡排序使最大的关键字元素放到最后以此类推,进行第2〜n次冒泡排序如果在排序过程中不存在逆序,则排序结束在最坏情况下,冒泡排序中,若初始序列为“逆序”序列,则需要比较nD-l/2次快速排序是对冒泡排序的一种改进它的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,最终达到整个记录有序对于快速排序,当初始记录序列按关键字有序或基本有序时,快速排序退化为冒泡排序,最坏情况下比较次数为nn-l/
26.B解析线性表肯定是线性结构.二叉树是非线性结构;线性链表是线性结构,栈与队列是特殊的线性表,也是线性结构;线性表是线性结构
7.D数据处理是指将数据转换成信息的过程,故选项A叙述错误数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误所以本题选D
8.B解析do-while语句的一般形式是do(语句}while(表达式);特点是“直到型”循环结构先执行一次“语句”,判“表达式”,当“表达式”为非0再执行“语句,直至表达式的值为时停止执行语句在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k当k%ll的值为时,则不必执行循环,将执行/k/U语句,输出结果,所以该表达式合理的条件是k%llo.C解析纯虚函数是在声明虚函数时被“初始化”为0的虚函数不定义对象而只作为一种基本类型用作继承的类,称为抽象类凡是包含纯虚函数的类都是抽象类抽象类的作用是作为一个类族的共同基类.AAo【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用got语句等
11.B解析此题考查的是类成员的有关概念类的友元函数可以直接访问该类的所有成员,但它不是类的成员函数,故选项A)错误;类成员函数的访问权限可以声明为公有、保护、私有,故选项C)错误;静态数据成员的声明是使用关键字static它可以是常成员,故选项D)错误
12.B.D.D解析程序中的TestClassl为TestClass的派生类,从程序中的main函数入手,定义了TestClassl对象xo调用析构函数的顺序,先执行派生类自己的析构函数,对派生类新增加的成员进行清理,然后调用子对象的析构函数,对予对象进行清理,最后调用基类的析构函数,对基类进行清理这里派生类中析构函数输出DERIVED基类析构函数输出BASEO.D\n如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被凋用的函数作声明\n.D栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误故答案为D选项
17.C本题考查常对象、常成员函数及构造函数常对象只能调用常成员函数,普通对象调用普通成员函数所以本题中bjl为常对象,执行objl.print后,会执行常构造函数,输出const val=10;而obj2为普通对象,执行obj
2.print时,会执行默认构造函数,输出val=20放答案为C.D解析二维数组可以看作是一维数组的扩展选项D表示的是一个一维数不清组,里面每个元素是一个指针,而指针肯定指向某个地址从而完成二维数组的扩展考生要注意选项C中*和口的运算优先级.C当有序线性表为顺序存储时才能用二分法查找可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较1092n次,而顺序查找需要比较n次
20.BB.【解析】快速排序的基本思想是从表中选取一个元素(如本题中的33)将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的
18、
9、
25、序后面.D本题主要考查指针变量对数值的引用在题目中,首先定义了整型指针变量point和一个整型变量a变量a的初值为4然后是指针变量指向a或者说将变量a所在存储单元的地址值赋给指针变量在选项A中,很显然,不全是地址,只有point表示地址,而*a等价于*(a)表示取一个数值在选项B中,也不都表示地址,其中*point表示数值,其他两个表示地址在选项C中,与选项B类似,其中的*point表示数值在选项D中,都表示地址,是题目的选择答案.DDo【解析】字符型数据在计算机内部是以AsCIl码存储的,英文大写字母和小写字母在ASCII码表中都是连续的大写字母A〜z是从65〜90小写字母a〜z是从97〜122所以只要变量C大干等于a并且等于小于2就能保证其为小写字母
23.B本题考查公用继承对基类成员访问属性公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为B.对象对象解析在面向对象概念中,所有的同类的实体的抽象就构成一个类,而类被实例化就形成一个对象.私有或private私有或private解析此题考查的是类的成员的默认访问权限在未声明,即默认情况下,类中数据成员和成员函数的默认访问级别为私有.或程序调试(阶段)或软件调试(阶段)或Debug(阶段)解析软件测试的目的是发现程序中的错误,而调试的目的是确定程序中错误的位置和引起错误的原因,并加以改正换句话说,调试的目的就是诊断和改正程序中的错误调试不是测试,但是它总是发生在测试之后因此,本题的正确答案是调试阶段或程序调试阶段或软件调试阶段或Debug阶段.编译运行编译,运行解析C++中的多态性分为两类编译时的多态性和运行时的多态性编译时的多态性通过函数重载和模板体现的,而运行时的多态性是通过虚函数体现的.类类解析在面向对象方法中,类描述的是具有相似性质的一组对象所以,属性与操作相似的一组对象称为类.friendvoidFunc;friend\u3000void\u3000Func;解析注意friend关键词应加在函数的前面,表示该函数作为本类的一个友元函数.每个数据成员所占空间之和每个数据成员所占空间之和解析结构体没有行为,即没有代码占用空间,故其占用的空间仅仅包含其数据成员占用的空间之和.mallocll或mallocsizeofchar*11malloc11或mallocsizeofchar*11解析malloc函数的参数可以是一个具体的常数也可以是一个表达式在本题中,可以是mallocll也可以借助于sizeof运算符来表示.有格式有格式解析C++中运算符“”和“”都是属于有格式的输入输出注意使用cincout进行输入输出时应包括头文件iostream.ho.returntl.area+t
2.area;returntl.area+t
2.area;解析符号重载时往往采用的方法是对对象中的每个成员分别处理,封装之后体现出对象参与运算的现象.##解析“#”是预处理命令•的开始标记符.templateclassTTDBLTn{returnn+n;}templateclassTTDBLTn{returnn+n;解析本题考核函数模板的使用函数模板的一般说明形式如下template〈类型形参表返回类型函数名形参表{〃函数体}函数调用方式为函数名实参表;o形参表中的类型以实参表中的实际类型为依据由此易得答案.1应添力「public二\n2“inti”应改为“inti10;\n3“i++;”应改为“i-;\n【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问故应在构造函数前添加“public:,否则该类无法被实例化变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出5个数,while的循环变量i每次减1在i5时循环,故i初始化应为10若循环中i每次增1则循环永远不会退出.1应改为“TCTC”2应改为voidTCdisplay”⑶应改为“TC〜TC”【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类,使用格式为“类名成员函数〉参数函数,因此第1处应改为“TCTC”默认构造函数没有参数由第2处“TCdisplay”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTCdisplay”由第3处的语句“TCTC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”.1应改为usingnamespacestd;\n2应改为outl.openl.txtios::binary|iosapp;\n3应改为“outl.puts[i];\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“outl.open是.txtbinary|app7语句缺少类ios即第2处的语句修改为“outl.open
2.txt]iosbinary|ios叩p;第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“outl.puts[i];.⑴应改为“TCobjll;\n2应改为“Objl.SetNumberlO;\n3应改为“0bj
2.SelNumberlOO:.有如下程序#includeiostreamusingnamespacestd;classTestClass{public;〜TestClass{coutBASE:;}};classTestClasskpublicTestClass{public:〜TestClass1{coutDERIVED;};intmain{TestClass1x;retum0;执行后的输出结果是oA.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE.已知函数FA调用函数FB若要把这两个函数定义在同一个文件中,则A.FA必须定义在FB之前B.FB必须定义在FA之前C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前.下列叙述中正确的是0A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构.有如下程序:\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl根据TC类构造函数的定义TCinti存在整型参数,并且题目要求第一个输出结果两1所以补全参数1即第1处的“TCobjll;第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值在C++中成员函数的使用形式应该是对象名.成员函数,所以修改为“objl.SetNumberlO;类是对象的抽象,而对象是类的具体实例第3处叮
3.5©1即11m「100;”语句中的11为类并不是对象,这里应该使用定义的对象,即取所以将语句修改为“obj
2.SetNumberlOO;
40.1应改为“ein.getlinestr120;2应改为whilestr[i]°3应改为“ifstr[i]=astr[i]=2【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数,终止标志字符“,所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifstr[i]=a”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为44ifstr[i]=astr[i]=zo
41.1应改为匕55011回200心1==4;”\n2应改为assertsizeofs2尸=10;”\n3应改为assertsizeofs3尸=1;”\n【解析】assert函数如果为假,则会产生一个中断异常所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常uassertsizeofs1==3;”语句中“sizeofsD==3”为假,这会使程序产生异常,不能正常执行因为strl的值为abc但是它还有一个尾符,它的长度应该是4而不是3所以在第1处修改为“assertsizeofsD==4了str2
[10]说明str2的空间为10在第2处修改为“assertsizeofs2尸=10charstr3=23;语句说明23是字符,所占存储空间为1所以修改为t4assertsizeofs3==l;.1“staticintn=O应改为staticintn;2“intCOn;”应改为“intCOn=0;”34tcout«c.n«endl;应改为coutv〈c-nendl;【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;,第2处要给n赋值,第3处输出时引用c的对象,应改为cout〈vc-nendl;.1应改为usingnamespacestd;⑵应改为outl.openl.txtiosbinaryIiosapp;3应改为“outl.puts[i];5o【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中输入、输出方式是在ios类中定义的所以“outl.openl.txtbinaryIapp;”语句缺少类ios即第2处的语句修改为“outl.openl.txtiosbinaryIios叩p;第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为Uoutl.puts[i];”.1应改为catchchar*s”2应改为catehinti”3应改为catch…”【解析】本题中第1个标识前的异常抛出语句为“throwerror”;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为uthrowint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号…表示它可以捕捉任何类型的异常信息,即修改为catch.1应改为catchchar*s”2应改为catehinti”3应改为catch…户【解析】本题中第1个标识前的异常抛出语句为“throw”error”;,其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S°第2个标识前的异常抛出语句为C4throwint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch…”.1应添力□doubleleftPointtopPointrightPointhot-tomPoint;2应添力□CReeKdoubleleftPoint,doubletopPoint=0doublerightPoint=0doublebottomPoint=O;3应添力□“〜CReet{}4应添加CReetrect2rectl;【解析】本题在第1处完成私有数据成员leftPointtop-PointrightPointbottomPoint的定义,均为double型的变量,故第1处应添力□doubleleftPointtopPointrightPointbottomPoint;构造函数完成成员变量的初始化,类CRect的默认构造函数初始化double型私有数据成员leftPointtopPointrightPointbottomPoint为0故第2处应添力□CRecKdoubleleftPoint,doubletopPoint=0doublerightPoint=0doublebottomPoint=0;析构函数名和类名一致,并在前面加“〜”以和构造函数区别,该析构幽数体为空,故第3处应添力口“〜CRect{},虽然该函数体为空,但“{产必须保留主函数中类CRect的对象rect2是通过复制构造函数将recti的值赋值给它实现初始化的.而reetl的初始化直接调用自定义构造函数,第4处应添加“CReetrect2rectl;.⑴应添加“BAintm{a=m;}”2应添加“PAlintmintn BAn{b=m;}”3应添力H“PA2intmintnintk PAlnk{C=m;”4应添力“【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA在BA中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BAintm在函数内部对成员a赋值,故第1处的语句应添加“BAintm{a=m;广根据第2处的要求,构造函数的形式为“PAlintmintnm赋值给PA1类成员b将n作为基类BA构造函数的参数值传入,故第2处应添加“PAlintmintn BAn{b=m;}“根据第3处的要求,函数形式为PA2intmintnintk在构造函数中将m赋值给数据成员c将n和k分别赋值给基类PA1构造函数的参数m和n因此第3处应添加“PA2intmintnintk PAlnk{C=m;}”根据第4处的要求,PA2类公有派生于PA1而PA1公有派生于BA因此在PA2类中可以调用基类的geta和getb来获得基类私有成员a和b再输出PA2的私有成员C即满足要求,因止匕第4处应添力ITcoutvvgetavWvgetbWvvCvvendl;.补充完整后类square的完整定义为classsquare{private:intlengthwidth;pointlabel;public:square{length=0;width=0;label.setOO;squareintlintwintxinty{length=l;width=w;labelsetxy;}voidsetintlintw{length=l;width=w;}intget_areaconst;};intsquare::get_areaconst{returnlength*width;}补充完整后,类square的完整定义为\r\nclasssquare\r\n{\r\nprivate:\r\nintlengthwidth;\r\npointlabel;\r\npublic:\r\nsquare\r\n{\r\nlength=O;\r\nwidth=0;\r\nlabel.set00;\r\n}\r\nsquareintIJntwintxinty\r\n{\r\nlength=1;\r\nwidth=w;\r\nlabelsetxy;\r\n}\r\nvoidsetintlintw\r\n{\r\nlength=l;\r\nwidth=w;\r\n}\r\nintget_areaconst;\r\n};\r\nintsquare::get_areaconst\r\n{\r\nreturnlength*width;\r\n}解析第1空白处是定义类square的各种私有成员,第2空白处完成构造函数square的定义,并具有默认参数,第3空白处是完成重载构造函数,第4空白处完成成员函数get_area的类外定义.l\r\nchar*forename;\r\nchar*surname;\r\n2\r\nforename=newchar[strlenf+1];\r\n3\r\ndelete[]forename;\r\ndelete|]surname;\r\n4\r\ncoutforenamennsurnamenhasnmoneyendl;1\r\nchar*forename;\r\nchar^surname;\r\n2\r\nforename=newchar[strlenf+1];\r\n3\r\ndelete[]forename;\r\ndelete[]surname;\r\n4\r\ncoutforenamennsurnamenhasnmoneyend1;解析主要考查考生对于类的定义和字符指针的动态空间申请和释放的掌握,具中⑵中new关键字是动态申请空间,里面使用了函数strlen该函数是返回参数字符串的长度,之所以加一是要加入字符串结尾标志,这一点考生切记3中delete是释放动态内存的关键字,释放一位数组占用的内存格式是先写口,之后是指针名,括号内不写数组的大小#inCludeiostreamusingnamespaCestd;ClassMyClass{public MyClassintXvalX{}voidPrintConst}tout«^Const val=^«val«9\t5;}voidPrint{tout«val=«val«\f;private intval;};intmain{ConstMyClassobjll0;MyClassobj220;obj
1.Print;obj
2.Print;return0;执行这个程序的输出结果是A.val=10Const val=20B.Const val=10Const:val=20C.Const val=10val=20D.val=10val=
20.已知一函数的形参说明为intarr
[5][6L则与此等效的形参说明为A.intarr[][]B.int
[5][]C.int*a
[6]D.int*a
[6].在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是oA.OnB.On2C.O1092nD0nl092n.待排序的关键码序列为3318925678253951270要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第个位置A.3B.5C.7D.
9.若有语句int*pointa=4;和point=a;下面均代表地址的一组选项是A.apoint*aB.*aa*pointC.*point*pointaD.a*pointpoint.判断char型变量c是否为小写字母的正确表达式是A.a=c=zB.c=Ac二zC.a=cIIz=cD.c=ac二z.有如下类定义ClassAA{inta;public AAintn=0an{};ClassBB publicAA{public BBintn;其中横线处缺失的部分是A.:an{}B.:AAn{}C.{an;}D.{a=n;
三、
2.填空题12题.在面向对象方法中,类的实例称为o.类中数据成员和成员函数的默认访问级别为o.的任务是诊断和改正程序中的错误.从实现的角度划分,C++所支持的两种多态性分别是【】时的多态性和【】时的多态性.在面向对象方法中,属性与操作相似的一组对象称为【】.若需要把一个函数voidFunc;”定义为一个类Sample的友元函数则应在类Sample的定义中加入一条语句[]o.一个结构占用的空间理论上等于【]o.用以下语句调用库函数mail使字符指针st指向具有11个字节的动态存储空间,请填空st=char*[];.我们通常用到的cin,是属于【】输入.下列程序对加号进行了重载,划线部分的语句是【]o#includeiostream.h#includemathhclassTriangleintxyz;doublearea;public:Triangleintiintjintkdoubles;x=i;y=j;z=k;s=x+y+z/
2.0;area=sqrts*s-x*s-y*s-z;voiddispareacoutnArea=nareaendl;frienddoubleoperator+TriangletlTrianglet2;voidmainTriangletl345t251213;doubles;coutntl:n;tl.dispareacoutnt2:n;t
2.dispareas=tl+t2;tout总面积:=sendl;.C++程序中的预处理命令以符号【】作为起始标记.已知intDBLintn{returnn+n;}和longDBLQongn{returnn+n是一个函数模板的两个实例,则该函数模板的定义是【】
四、程序改错题(10题).使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误,使得程序输出98765注意错误的语句在/********error********/的下面,修改该语句即可其他的语句不能修改试题程序#includeiostream.hclassTCerrorTCintim_i=i;voidprintcout«—m_i«;public intmi;intmainerror。