2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx

上传人:夺命阿水 文档编号:964843 上传时间:2024-02-04 格式:DOCX 页数:24 大小:65.35KB
返回 下载 相关 举报
2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第1页
第1页 / 共24页
2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第2页
第2页 / 共24页
2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第3页
第3页 / 共24页
2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第4页
第4页 / 共24页
2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx》由会员分享,可在线阅读,更多相关《2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx(24页珍藏版)》请在课桌文档上搜索。

1、2021年内蒙古自治区呼伦贝尔市全国计算机等级考试C+语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .以下哪个特征不是面向对象思想中的主要特征()。A.多态B.继承C.封装D.垃圾回收2 .关于静态数据成员的描述中正确的是()。A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化3 .设栈S的初始状态为空。元素a,b,c,d,e,f依次通过栈S,若出栈的顺序为b,d,c,f,e,a,则栈S的容量至少应该为A.3B.4C.5D.64 .C+语言中,w

2、hile循环和do-while循环的主要区别是()。A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句5.为使下列程序的正确输出结果为:Nowis2004-7-612:12:12那么应该在程序划线处填入的语句是()。#includeusingnamespacestd;classTIME;classDATEpublic:DATE(inty=2004,intm=l,i11td=l)year=y;month=m;day=d;voidDateTime(TIME

3、&t);private:intyear,month,day;classTIMEpublic:TIME(inth=O,i11tm=0,ints=0)hour=h;minute=m;second=s;将类DATE中成员函数DateTime声明为类TIME的友元函数private:inthour,minute,second;voidDATE:DateTime(TIME&t)cout,Nowis,year-,month-,day,t,hourt.minute,:,t.seoond.,endl;intmain()DATEd(2004,7,6);TIMEt(12,12,12);d.DateTime(t);

4、return0;A.friendvoidDateTime(TIME&t);B.friendvoidDATE:DateTime(TIME&0;C.voidDateTime(TIME&t);D.friendvoidDateTime(TIME&t);6 .两个或两个以上模块之间关联的紧密程度称为()。A.耦合度B.内聚度C复杂度D.数据传输特性7 .在深度为4的满二叉树中,叶子节点的个数为()。A.16B.8C.7D.158 .下面程序的输出结果是#includeclassexampleinta;public:example(intb)a=b+;voidprint()a=a+l;couta,;voi

5、dprint()constcouta=b)?ab;下列对函数模板MaX()的调用中错误的是()oA.Max(3.5,4.5)B.Max(3.5,4)C.Max(3.5,4.5)D.Max(3.5t4)19 .有如下两个类定义classXXprivate:doublexl;protected:doublex2;public:doublex3;);classYYiprotectedXXprivate:doubleyl;protected:doubley2;public:doubley3;);在类YY中保护成员变量的个数是A.1B.2C.3D.420 .下列说法正确的是()。A定义inta4=l,3

6、;,则a0=l,al=3,a3的值不确定B.定义staticinta4;,则元素值不确定C.constintx;x=5;表示给常量X赋初值D定义inta4;,则其元素的值是不确定的21 .已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则()oA.FA必须定义在FB之前B.FB必须定义在FA之前C若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前22 .对下列程序段的描述正确的是()o#includeintfun(int,int);voidmain()coutfun(l,2)endl;intfun(intx,i

7、nty)returnx+y;A该函数定义正确,但函数调用方式错误B.该函数调用方式正确,但函数定义错误C,该函数定义和调用方式都正确D.该函数定义和调用方式都错误23 .有如下程序:ftincludedUsingnamespacestd;ClassTestClassinta;public:TestClass(intx)a=x;voidshow()couta;);ClassTestClassl:publicTestClassintb;public:TestClassl(inti):TestClass(i+l),b(i)voidshow()coutshow();returnO;该程序运行后的打印结

8、果是()oA.5B.lC.0D.2三、2.填空题(12题)24 .静态成员函数可以直接访问类的【】成员,不能直接访问类的【】成员。25 .如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是【】。26 .将关键字ConSt写在函数头之后,函数体之前,说明该函数是一个ConSt成员函数。此时ConSt不是指定函数的返回值,而是修饰【】指针。27 .符号常量可以用宏定义define和来表示。28 .COutn还可以表示为【】,cout.Width(IO)还可表示为【29 .在长度为n的有序线性表中进行二分查找,最坏的情况下需要的比较次数为【30 .以下程序输出的结果

9、是【#includevoidmain()(inta=5tb=4,c=3,d;d=(abC);coutd;)31 .在面向对象方法中,信息隐蔽是通过对象的【】来实现的。32 .在一个图中,所有顶点的度数之和等于所有边数的【】倍。33 .多态性分为两类:编译时的多态性和【34 .在树形结构中,树根结点没有【35 .设i,j,k均为int型变量,则执行完for(i=0,j=10;i=j;i+,j-)k=i+j;语句后,k的值为【】。四、程序改错题(10题)36 .使用VC+6.O打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Construct

10、or,i=0,Destructor注意:错误的语句在/*error*的下面,修改该语句即可。试题程序:include(iostream,h)classTC(inti;public:TC;voiddisplay;TC;/*error*TC:TC(COUt“Constructor。,;i=0;)/*error*TC:display(toutz4=,zi,zzendl;)/*error*TC:TC(COUIz,DestructorzzclassCO(public:/*error*/Staticintn=O:CO(n+:C0(n:/*error*/intCO:n;voidmain(COobj;COob

11、j27;CO*C=NULL:c=&obj:/*error*/eoutC.nendl;coutCO::nendl;38 .使用VC+6.0打开考生文件夹下的源程序文件Lcpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个CatCh必须抛出执行的任何异常。程序异常,输出信息为error0ERROR注意:不要改动ITIain函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:ttincludeiostream,h)intmaintry(throw(,errorzz);)/*error*catch(chars)(coutsendl;)try(

12、throw(int)0);)/*error*catch(coutiendl;)try(throw(0);throw(z,errorzz);/*error*catch(coutz,ERR0Rendl;)returnO;)39 .使用VC+60打开考生文件夹下的源程序文件l.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor,i=0,Destructor注意:错误的语句在/*error*的下面,修改该语句即可。试题程序:#include(iostream.h)ClassTCinti;public:TC;voiddisplay;TC;);/*prQr*TC

13、:TC(coutConstructor,;i=0;)/*fQ*TC:display(touti=,itendl;)/*rrQr*TC:TC(COUI,Destructorendl:)Voidmain(TCa;a.display;)40 .使用VC+6.0打开考生文件夹下的源程序文件Lcpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/*erro*的下面,修改该语句即可。试题程序:ttinclude/*error*voidmain(/*erro*intm=0142:/*error*intn=0X27:intq=32;coutmendl;coutnen

14、dl;coutqendl;return;41 .使用VC+6.0打开考生文件夹下的源程序文件Lcpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/*crror*的下面。试题程序:ftincludeclassTC(public:TC(inti)(number=i;VoidSetNumber(intm)(number=m;intGetNumberconst(returnnumber;VoidPrintconst(cout,znumber=,n

15、umberendl;private:intnumber;);voidmain(/*error*TCobjl;objl.Print;TCobj2(3);/*error*objl.number=10;/*error*%o*TC.SetNumber(100);objl.Print;obj2.Print;42.使用VC+60打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面O试题程序:#includ

16、e#include/*error*Usingstd;voidWriteFile(char*s)(Ofstreamoutl;/*Qf*Outl.open(l.txt,binaryapp);for(inti=0;si!=0;i+)/*Qf*outl.puts(si);)outl.close;)VoidCIearFiIeOfstreamoutl;outl.open(l.txt);outl.close;)intmainchars1024;CIearFiIe;cout,pleaseinputastri9:endl;cin.getline(s,1024);WriteFiIe(三);return;)43 .

17、使用VC+6O打开考生文件夹下的源程序文件l.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:sizeof(Sl)=5sizeof(s2)=10sizeof(s3)=l注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。不能删除assert()语句。只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include#includeVoidmain()(char*sl=abc:/*(fQ*assert(sizeof(sl)=3):coutsizeof(sl)=5endl;cha

18、rs210=ab:/*(fQ*assert(sizeof(s2)=2);coutsizeof(s2)=10endl;chars3=23:/*(fQ*assert(sizeof(s3)=4);coutsizeof(s3)=lr*的下面。试题程序:#includeVoidmaininti=0;charstr120;coutEnterastringendwith?.endl;/*Qf*ci.getline(str,120);/*ffQf*while(str)(/*(fQ*if(stri)=a)stri=stri-a+A;i+;)coutstrendl;return;)45 .使用VC+6.O打开考生

19、文件夹下的源程序文件Lcppo本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符”?,时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*crror*的下面。试题程序:ftincludevoidmain(inti=O;charstr120;coutz,Enterastringendwith?.zzendl;/*error*cin.getline(str,120);/*error*while(str)(/*error*if(stri)=a)stri=stri-aA;i+;)cout

20、strendl;return;五、综合应用题(2题)46 .应添加VirtuaIvoidGetNamU=O;。应添加,constchar*GetName2n0应添加TC2(char*str)n。应添加。【解析】本题第1处要求“在类TCI中定义接口函数GetName,为纯虚函数”。在C+中,在基类中用virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为0的函数,即uVirtuaIvoidGetName=O;,。第2处要求“函数GetName2实现获得名字的缓存,但只获得读允许操作这个缓存”。只能引用数据成员,而不能修改,所以使用常成员函数,其一般形式为“const函数类型函

21、数名,即constchar*GetName2。第3处要求“实现TC2的构造函数”。TC2的构造函数与类TC2的名称应该相同,而且第3处的大括弧中是对字符数组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为,TC2(char*str)n0第4处要求“完成TC2的构造函数,实现对名字的处理”,补全类TC2的构造函数,构造函数中的名字变量Str对应于类TC中的成员变量m_str,所以这里补全变量赋值操作m-stri=;”。47 .使用VC+6.0打开考生文件夹下的源程序文件3.Cppo请完成以下部分,实现在屏幕上输出为C3C2这个程序需要修改的部分,请按照以下部分实现。(1)类CO

22、不能被实例化,请定义一个纯虚函数Print,在注释1后添加适当的语句。(2)类Cl私有虚继承类CO,请在注释2后添加适当的语句。(3)类C2公有继承于CO,请在注释3后添加适当的语句。(4)类c3公有继承于C2与CL请在注释4后添加适当的语句。注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:ftinclude(iostream,h)classCO();/亭亭*亭*亭*2*亭*亭*不*classCl:public:voidprintCoUtVClVVendl;II亭*亭亭*3*亭不*不不classC2:(public:voidprint(coutC2end

23、1;);/*4*x*classC3:(public:voidprint(coutC3end1;):voidmain(C30bj3;C20bj2;obj3.print;obj2.print;return;六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程test4_3。此工程包含一个源程序文件test4_3.cpp,其对一个学校的教师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teacher作为person类的派生类。请按要求完成下列操作,将程序中的类定义补充完整。定义基类person的私有数

24、据成员name和age,分别用于表示姓名和年龄,name为字符指针,age为血型的数据。请在注释7*1*之后添加适当的语句。完成基类PerSon的重载构造函数PerSon(Char*minta)的定义,把数据成员name,age分别初始化为参数n,a的值,请在注释7*2*1之后添加适当的语句。根据主函数main中对Sl的声明,定义派生类StUdent的构造函数。在注释7*3*n之后添加适当的语句。完成派生类teacher成员函数voidsetinf(ehar*,inta,char*d,char*1)的定义,其功能为记录教师的姓名、年龄、院,系与职称信息。请在注释7*4*n之后添加适当的语句。输

25、出结果如下:刘雷(45)destructor蒋军(23)destructor注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test4_3.cpp清单如下:#includeclassperson(/public:person()0person(char*n,inta)(/*2*)voidsetname(char*n)name=;)voidsetage(intaXage=a;)person(Xutname,(age)destructorendl;);classstudentpublicperson(char*departmet;intcode;public:/*3*(dep

26、artmet=d;code=c;);classteacher:publicperson(char*departmet;char*level;public:teacher()voidsetinf(char*,inta,char*d,char*1)(/*4*department=d;IeveI=I;);voidmain()(studentsl(,W,23,”计算机学院二2);teachertl;UsetinfC刘雷”,45,”计算机学院”,“教授”);)49.使用VC6打开考生文件夹下的工程testl3_3。此工程包含一个testl3-CPp,其中定义了类VeCtOr,但类的定义并不完整。请按要求

27、完成下列操作,将程序补充完整。完成构造函数的定义,把数据成员SiZe初始化为参数S的值,数据成员buffer指向动态申请的int型SiZe大小的空间。请在注释*1*”之后添加适当的语句。完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释“*2*之后添加适当的语句。完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,注意如果nd超界,请输出uerrorinindex0请在注释7*3*h之后添加适当的语句。完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer指向的空间。请在注释7-4*之后添加适当的语句。输出结果如下:12345678910123456789

28、10dd注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。源程序文件testl3.3清单如下:#include#includeclassVector(public:Vector(ints=100);Vector(Vector&v);int&elem(intndx);voiddisplay();voidset();Vector();protected:intsize;int*buffer;);Vector:Vector(ints)(/*)Vector:Vector(Vector&v)/*2*for(inti=0;isize;i+)(*(buffer+i)=*(v.bufferi);)i

29、nt&Vector:elem(intndx)(/*3*(couterrorinindexendl;exit;)returnbufferndx;)voidVector:display()(for(intj=0;jsize;j+)coutelem(i)endl;)voidVector:set()(for(intj=0;isize;j+)elem(j)=j+l;)Vector:Vector()(/*4*)voidmain()(Vectora(10);Vectorb(a);a. set();b. set();a. display();b. display();)参考答案1 .D解析:面向对象语言的基本

30、特性是封装,继承和多态。注意:垃圾回收是JaVa的主要特点。注意:要掌握面向对象的优点。2 .D解析:C+类中的静态成员变量是该类中所有对象所共有的,它能够被类中的任何函数调用,所以选项A)、选项B)、选项C)是错误的。而类的静态数据成员是必须要进行初始化才能使用的。3 .A解析:根据题中给定的条件,可以作如下的模拟操作:元素a,b进栈,栈中有2个元素,分别为a,b;元素b出栈后,元素c,d进栈,栈中有3个元素,分别为a,c,d;元素d1C出栈后,元素e,f进栈,栈中有3个元素,分别为a,e,f;最后,元素f.e,a出栈,栈为空。可以看出,进栈的顺序为a,b,c,d,e,f,出栈的顺序为b,d

31、tc,f,e,a,满足题目要求。每次进栈操作后,栈中最多有3个元素,所以,为了顺利完成这些操作,栈的容量应至少为3。本题的正确答案为A。4 .A解析:本题考核C+语言中while循环和do-while循环之间的区别。do-while语句与WhiIe语句不同的是,do-while循环中的至少会执行一次,而WhiIe语句中当条件在第一次循环就不满足时,语句一次也不会执行。5.B解析:根据要求可知,在横线处是将类DATE中成员函数DateTime声明为类TIME的友元函数。由于函数DateTime是类DATE的成员函数,因此对DateTime函数的使用要加上“DATE:修饰。其他各声明的组成部分可参

32、照函数DateTime在类体外的定义实现。6.A解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个;一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。7.B解析:满二叉树的第k层上有2k-l个结点,且深度为m的满二叉树有2m-l个结点。8.C解析:“+”是右结合的,所以先赋值为3,最后输出3+1;常成员函数只有常对象才能调用,所以输出2。9.B解析:此题为数据库的基本概念

33、,可以对照办工软件的电子表格进行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即为二维表中的一行)。投影:按字段(也称属性,比如学生关系(学号,姓名,出生年月,性别),学号、姓名都是属性)选取一列或多列(一个二维表中所有元组在某一列或几列上截取出来)。连接:2个或2个以上的表连接组成一张新的表,通常有条件连接。比如学生关系(学号,姓名,系号),又有一张系表(系号,系名,主任),2张表可以合并为一张这样的表(学号,姓名,系号,系名,主任)。10.D在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用

34、“”括起来的参数表)或从模板函数实参表(用“”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。11.C解析:C+语言中拷贝构造函数的参数一般是某个对象的引用名。12.B解析:采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维

35、护,它包括3种基本控制结构,分别是顺序结构、选择结构和重复结构(又称循环结构)。注意:控制程序结构的方法和作用。13 .A本题考查的是文件流的操作,app表示以追加方式打开文件(即将指针移至文件尾),binao表示以二进制方式打开文件。14 .D15 .DD。【解析】使用ifstream流类定义流对象并打开磁盘文件时,文件没有默认的打开方式。其中ios:in是为输入而打开;iso:out是为输出而打开。16.BBo【解析】本题考查C+语言的正确赋值方法。a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式b=c+2和a=b。选项A中包含一个不合法的运算符:二;选项C应改为(in

36、t)18.5%3;选项D可理解为两个表达式a+7=c+b和a=a+7,其中第一个是错的,因为C+语言规定赋值号的左边只能是单个变量,不能是表达式或常量。17.DDo【解析】在C+中规定如果一个类被声明为类模板,那么其中的所有成员函数就都成为了模板函数。18.BBo【解析】引用模板函数和引用一般函数在语法形式上没有任何区别。说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。19 .C20 .D解析:当定义一个static数组时,虽未初始化,但元素值默认为0;对非static的数组,没有赋初值,则其元素中的值为不确定的;若赋初值但数据不

37、够用,则其他元素值初始化为Oo21 .Dn如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被凋用的函数作声明。n22 .C解析:函数定义的一般形式为:类型标识符函数名(形式参数列表)声明部分;语句。函数调用的一般格式为:函数名(实参列表)。而intu3000fun(int,int)”为函数声明,是可以不写形参名,只写形参的类型。所以,可以看出函数fun的定义和调用都是正确的。23 .DD0【解析】TeStCIaSS为TeStelaSSI的基类,在主函数main中定义TeStClaSS对象b,*P0TeStClaSSl对象d,P指向d,调用其ShOW函数。aTestClass(i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号