2021年内蒙古自治区通辽市全国计算机等级考试C++语言程序设计测试卷(含答案).docx

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

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

1、2021年内蒙古自治区通辽市全国计算机等级考试C+语言程序设计测试卷(含答案)学校:班级:姓名:考号:一、L选择题(10题)1.SamPIe是一个类,执行下列语句后,调用SamPle类的构造函数的次数是Samplea2J,*P=FlewSample;A.0B.1C.2D.32 .执行语句序列inti=0;while(i25)i+=3;couti;输出结果是A.24B.25C.27D.283 .已知:intn=10;那么下列语句中错误的是A.int*p=newlongn;B.intpn;C.int*p=newlong(n);D.intp10;4 .数据库的概念模型独立于A.具体的机器和DBMSB

2、.E-R图C.信息世界D.现实世界5 .关于动态存储分配,下列说法正确的是0A.new和delete是C+语言中专门用于动态内存分配和释放的函数B.动态分配的内存空间也可以被初始化C.当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D.当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new6 .以下程序的输出结果是()。#includemain()intb33=0,l,2Al,2,0,l,2,ij,t=l;for(i=0;i3;i+)for(j=i;j=i;j+)t=t+bibjj;coutt;)A.3B.4C.1D.97 .下列选项中,不属于模块间

3、耦合的是A.数据耦合B.同构耦合C.异构耦合D.公用耦合8 .算法的空间复杂度是指()oA.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间9 .下列叙述中错误的是A.公有继承时基类中的public成员在派生类中仍是public成员B.私有继承时基类中的protected成员在派生类中仍是protected成员C.私有继承时基类中的public成员在派生类中是private成员D.保护继承时基类中的public成员在派生类中是protected成员10 .下列关于SWith语句的描述中,正确的是()。A.switch语句中default字句可以

4、没有,也可有一个B.switch语句中每个语句序列中必须有break语句C.switch语句中default字句只能放在最后D.switch语句中case子句后面的表达式可以是整型表达式二、单选题(13题)11 .下列叙述中错误的是()oA.gets函数用于从终端读入字符串B.getchar函数用于从磁盘文件读入字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件12 .一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。A.38,40,46,56,79,84B.40,38,46,

5、79,56,84C.40,38,46,56,79,84D.40,38,46,84,56,7913 .如果表达式“-X/y中的“和/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为()。A.operator/(X.operator-()ly);B.operator/(operator-(x),y);C.X.operator-().operator/(y);D.y.operator/operator(x);14 .语句ofstreamf(,SALARY.DAT,lios:app|ios:binary);的功能是建立流对象f,试图打开文件SALA-RY.DAT并与之连接,并

6、且()。A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件15 .有下列程序:#includeintfun(intx,inyy)if(x=y)return(x);elseretum(x+y)/2);)voidmain()inta=4,b=5,c=6;printf(u%dn,lfun(2*a,fun(b,c);)程序运行后的输出结果是()oA.3B.6C.8D.1216 .派生类的成员函数不能访问基类

7、的()。A.公有成员和保护成员B.公有成员C.私有成员D.保护成员17 .下列选项中属于面向对象设计方法主要特征的是()。A.继承B.自顶向下C模块化D.逐步求精18 .下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈19 .下列叙述中正确的是A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对20 .下列程序的输出结果是#includeclassMyclasspublic:Myclass(inti=O,intj=0)x=i;y=j;voidshow()cout11x=mxn,y=yendl;voidshow(

8、)constcout11x=mmny=yn为true或mmB.switCh语句结构中必须有default语句CJf语句结构中必须有else语句D.如果至少有一个操作数为true,则包含“If”运算符的表达式为true23 .下面对于友元函数描述正确的是()。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员三、2.填空题(12题)24 .在TestCIass类的定义中,对赋值运算符二进行重载。请将画线处缺失的部分补充完整。TestClass:operator=(constTestClass&rhs)(if(this=

9、&rhs)return*this;value=rhs.value;return*this;)25 .数据的组织和存储会直接影响算法的实现方式和【】。26 .如果把类FriendCIass定义为类TestCIass的友元类,则应该在类TestCIass的定义中加入语句O27 .下列程序的输出结果是0#includeusingnamespacestd;classTestpublic:Test()cnt+;Test()cnt-;)staticintCount()returnent;private:staticintent;);intTest:cnt=0;intmain()(coutTest:Cout

10、();Testtl,t2;Test*oT3=newTest;Test*pT4=newTest;coutTest:Count();deletepT4;deletepT3;coutTest:Cout()endl;returnO;)28 .树L中,度为1、2、3、4、5和6的节点个数为6、4、3、3、5、1,则L中叶子的个数是【29 .一棵树的广义表表示为a(b(c,d(e,f),g(h)ti(j,k(x,y)1结点f的层数为【】。假定树根结点的层数为Oo30 .数据管理技术发展过程经过人工管理、文件系统和数据库系统3个阶段,其中数据独立性最高的是阶段。31 .面向对象的模型中,最基本的概念是对象和

11、【】。32 .设有定义语句:inta=12;,则表达式a*=2+3的运算结果是o33 .有以下程序:#include#includeusingnamespacestd;intmain()(ofstreamofile(,Dtest.txt);if(!ofile)(couttest.txtcantopenendl;return0;)ofileThisbookisC+,12345endl;ofile.close();ifstreamifile(Dtest.txt);if(!ifile)(couttest.txtcantopenstr;ifile.close();coutstrr*的下面。试题程序:#

12、includeClassTC(public:TC(inti)(number=i;)voidSetNumber(intm)(number=m;)IntGetNumberconst(returnnumber;)voidPrintconst(coutumber=numberedl;)private:intnumber;);Voidmain(I!*error*TCobjI;objl.Print;TCobj2(3);/*fpQf*objl.number=10;II*eror*94)o*TC.SetNumber(100);objl.Print;obj2.Print;)37 .使用VC+6.O打开考生文件夹

13、下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件LtXt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:ftincludeftinclude/*error*usingstd;VoidWriteFiIe(char*s)(Ofstreamoutl;/*error*outl.OPen(1txt,binaryapp);for(inti=O;si!=0;i+)(/*error*outl.puts(si);outl.close;)VoidClearFile

14、(Ofstreamoutl;outl.open(,1.txt,z);outl.close;intmain(chars1024;ClearFile;coutzzpleaseinputastrin9:zendl;cin.getline(s,1024);WriteFile(s);returnO;38 .使用VC+6.O打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor,i=0,Destructor注意:错误的语句在/*error*的下面,修改该语句即可。试题程序:include(iostream,h)classTC(inti

15、;public:TC;voiddisplay;TC;);/*error*TC:TC(COUt“Constructor。”,;i=0;)/*error*TC:display(toutz,i=,zi,zzendl;)/*error*TC:TC(COUIz,Destructorzzendl:)voidmain(TCa;a.display;39 .使用VC+6.O打开考生文件夹下的源程序文件Lcpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个Cateh必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动ITIain函数,不能增加或删除行,也不能更改程序

16、的结构,错误的语句在/*error*的下面。试题程序:ftincludeiostream,h)intmain(try(throw(z,errorzz);)/*error*catch(chars)(coutsendl;)try(throw(int)0);)/*error*catch(coutiendl;)try(throw(0);throw(,errorz*);)/*error*catch(coutz,ERROR,endl;)returnO;40 .使用VC+6.0打开考生文件夹下的源程序文件Lcpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个CatCh必须抛出执行的任何异

17、常。程序异常,输出信息为error0ERROR注意:不要改动ITIain函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:ftincludeiostream,h)intmain(try(throw(,errorzz);)/*error*catch(chars)(coutsendl;)try(throw(int)0);)/*error*catch(coutiendl;)try(throw(0);throw(z,errorzz);/*error*catch(coutz,ERR0RClassTC(/*rpQr*/TC(inti)(m_i=i;)voidpri

18、nt(cout-mj5)(/*rpQr*/i+:04.print;)coutendl;return;)42 .使用VC+6.0打开考生文件夹下的源程序文件Lcpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:ttincludeclassTCpublic:TC(inti)number=i;)VoidSetNumber(intm)(number=m;)intGetNumberconst(returnnumber

19、;)VoidPrintconst(coutz,number=z*numberendl;)private:intnumber;);voidmain(/*error*TCobjl;objl.Print;TCobj2(3);/*error*objl.number=10;/*error*%o*TC.SetNumber(100);objl.Print;obj2.Print;43 .使用VC+6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/*error*的下面,修改该语句即可。试题程序:ftinclude/*error

20、*voidmain/*error*intm=0142:/*error*intn=0X27:intq=32;coutmendl;coutnendl;coutqclassCO(public:/*rror*/Staticintn=O:CO(n+:C0(n-:/*rror*/intCO:n;voidmainCOobj;COobj27;CO*C=NULL:c=&obj:/*error*/eoutC.nendl;coutC0::nr*的下面。试题程序:#includeVoidmain(inti=O;charstr120;coutEnterastringendwith?.endl;/*error*ci.ge

21、tline(str,120);/*n*error*while(str)(/*ero*if(stri)=a)stri=stri-a+A;i+;)coutstrendl;return;)五、综合应用题(2题)46 .请使用VC6或使用【答题】菜单打开考生目录PrOj3下的工程文件Proj3,此工程中包含一个源程序文件PrOj3.cpp,补充编制c+程序PrOj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件OUt.dat中。文件in.dat的长度不大于1000字节。要求:补充编制的内容写在“*”与“*”

22、两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。注意:程序最后己将结果输出到文件OUt.dat中,输出函数WriteToFiIe己经给出并且调用。/proj3.cppftincludeftincludettincludeusingnamespacestd;classdoc(private:char*sir;文本字符串首地址i11tlength;文本字符个数public:构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址doc(char*fiIename);voidreverse;将字符序列反转一doc;voidWri

23、teToFiIe(char*fiIename););doc:doc(charfiIename)(ifstreammyFi1e(fi1ename);intIen=100l,tmp;atr=newcharlen;Iength=O;whi1e(trap=myFi1e.get)!=EOF)(strlength+=trap;)strlength=0;myFile.close;voiddoc:reverse将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换/土止虫也/不不不不不不不不不不不不不DDD卒不不不不不不不不不不不不/不不不不不不不不不不不不同OOo

24、不不同不不不不不不不不不不doc:doe(deletestr;)voiddoc:WriteToFile(char*fiIename)(OfstreamoutFi1e(fi1ename);outFilestr;outFile.close;)voidmain(docmyDoc(,in.datw);myDoc.reveme;myDoc.WriteToFile(,out.dat,);47 .请使用VC6或使用【答题】菜单打开考生文件夹PrOj3下的工程Proj3,其中声明的DataLiSt类,是一个用于表示数据表的类。DataLiSt的重载运算符函数OPeratOr+,其功能是求当前数据表与另一个相同

25、长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个。PeratOr+函数。程序的正确输出应该是:两个数据表:1,2,3,4,5,63,4,5,6,7,8两个数据表之和:4,6,8,10,12,14要求:补充编制的内容写在“*333*”与*666*之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件。ut.dat中。输出函数WriteToFiIe已经编译为。bj文件,并且在本程序中调用。/DataList.httinCludeusingnamespaCestd;ClaSSDataLiSt数据表类intfen;double*d;public:Data

26、List(intlen,doubledata=NULL);DataList(DataList&data);intIengthConstreturnlen;doublegetElement(inti)Consttreturndi;DataListoperator+(ConstDataList&list)Const;两个数据表求和voidshowConst;显示数据表voidWriteToFile(Char$,ConstDataListfc);/main.CppSinClude,DataList.hDataList::DataList(intlen,doubledata):len(ien)d=ne

27、wdoublelen;for(inti=0;ilen;i+)d()i=(data=NULL?0.0:datai);)DataList::DataList(DataListfedata):Ien(data,len)d=newdoublelen;for(inti=0;ilen;i+)di=data.di;DataListDataList::Operator+(Con8tDataList&list,)Const两个数据表求和double*dd=newdoublelist.Iensth;/*333*/*666*returnDataList(list,length,dd);)voidDataList::

28、ShoWCOnSt显示数据表fr(int0i=0;ile11-l;i+)eoutdiw,;Coutdlen-1endl;intmaindoublesi=1,2,3,4,5,6;doubles2=3,4,5,6,7,8;DataListIistl(6,si),list2(6,s2);定义两个数据表对象eoutw两个数据表:cndLlistl.show:list2.show;eoutendlw两个数据表之和:,endl:(Iistl+list2).show;WriteToFile(wn,listl+list2);return0:六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程te

29、stl4_3,此工程包含一个testl3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。完成构造函数的定义,使数据成员filename,Content指向为空。请在注释7*l*t之后添加适当的语句;完成函数SeJCOntentS的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“*2*”之后添加适当的语句;完成成员函数copy(File&source,File&target)的定义,该函数实现将source的内容拷贝至target的功能,注意必须使用已经定义的成员函数来实现。请在

30、注释7*3-n之后添加适当的语句:完成析构函数的定义,要求释放COntent指向的空间。请在注释V/-4*之后添加适当的语句。输出结果如下:file2:filelcontentsfile2:file2contents注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。源程序文件testl4-3.CPP清单如下:#include#includeclassFileprivate:charfile_name64;char*contents;public:File(char*filename)(/*);File:File()(/*4*)voidpritfile()coutfile_name:c

31、ontentsendl;)friendboolcopy(File&source,File&target);boolset_contents(char*new_contents););boolFile:set_contents(char*new_contents)(/*2*if(cotets=NULL)returnfalse;strcpy(contents,new_contents);returntrue;)boolcopy(File&source,File&target)(/*3*)voidmain)(Filefl(,filel),f2(file2);fl.set_contents(filel

32、contents);copy(fltf2);f2.printfile();f2.set_contents(file2contents,);f2.printfile();49 .使用VC6打开考生文件夹下的工程test38_3。此工程包含一个test38_3.cpp,其中定义了类mplex,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。添加类complex的无参数的构造函数的定义,将私有成员real和imag都初始化为O0请在注释7*l*n之后添加适当的语句。添加类ComPIeX的带两个参数的重载构造函数,两个参数和i都是double类型,要求将赋值给私有成员real,i赋值给私有成

33、员imag,同时允许调用时参数i可是省略,请在注释“*2*”之后添加适当的语句。完成类ComPleX重载加法函数的定义,该函数直接返回一个类ComPIeX的对象,同时把参数对象C的实部real和虚部imag分别与当前对象对应部分分别相加,请在注释7*3*t,之后添加适当的语句。完成类complex的友元函数print的定义,使其以格式real+imagi”输出,请在注释7*4*f之后添加适当的语句。源程序文件test38_3.cpp清单如下;#includeclasscomplex(public:|/*/*2*(real=11imag=i;)complexoperator+(complex&c

34、);friendvoidprit(complex&c);private:doublereal,imag;;complexcomplex:operator+(complex&c)(/*3*)/*4*coutc.real+c,imagiendl;)voidmain()(complexcl(2.0,3,0),c2(4.0,-2.0),c3;c3=cl+c2;print(c3);c3=c3+complex(3.5);print(c3);参考答案1.D解析:定义对象数组a2时,要调用2次构造函数;生成*p的对象时,要调用一次构造函数,故答案为3。2.C解析:本题考核循环语句while的使用。while循

35、环8次后i的值变为24,符合循环条件进入循环体,经过自我赋值后i的值变为27,不符合循环条件,结束循环执行输出语句。3.B解析:本题考核指针、数组和new运算符。运算符new用于动态申请存储空间,它的操作数为某种数据类型且可以带有初值表达式或元素个数,若带初值,则其表达式为:=优0(初值),例如C选项所示,若带有元素个数,则其语法格式为:=new,例如A选项所示。数组定义中数组大小必须为常量,而B)选项中的n为一变量所以是错误的。4.A解析:概念模型侧重于表达建模对象之间联系的语义,它是一种独立于计算机系统的模型,是现实世界的第一层次的抽象,是用户和数据库设计人员进行交流的工具。所以答案为Ao

36、5.B解析:new分配的内存需要程序自己释放,系统不会自动回收,除非程序结束。动态分配内存失败,系统不会崩溃。6.B7C解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。8.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种

37、数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。9.B解析:在私有继承方式下,所有的类成员都继承为私有成员。10.A解析:使用switch语句应该注意的问题:它的实现留给该基类的派生类去做。但是,可以在将一个函数声明为纯虚函数的同时,为该函数提供实现版本。换句话说,一个函数是否为纯虚函数,取决于其原形的尾部是否有“二0;”,与函数体的有无无关。拥有实现版本的纯虚函数仍然有赖于派生类提供的重定义版本。另外,纯虚函数不能声明为内联函数。11.B解析:本题考

38、查的是输入输出函数的使用,gets和getchar函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs用于把字符串输出到文件,fwrite用于以二进制形式输出数据到文件,故选项B)描述错误。12.B解析:快速排序的的思想是:从线性表中选取一元素,如本题中的46,将线性表后面小于46的元素移到前边,而前面大于46的元素移到后边。本题中46是第一个元素,因此只须将线性表后面小于46的元素移到前边。13.BBo【解析】本题考查运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且cl、c2都是该类的对象,则“clOPerator+(c2)”,与“cl+c2”含义相同。如果+作为该类的非成员函数重载,则“oper

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

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


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号