2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx

上传人:李司机 文档编号:6777053 上传时间:2024-02-04 格式:DOCX 页数:38 大小:71.04KB
返回 下载 相关 举报
2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx_第1页
第1页 / 共38页
2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx_第2页
第2页 / 共38页
2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx_第3页
第3页 / 共38页
2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx_第4页
第4页 / 共38页
2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx》由会员分享,可在线阅读,更多相关《2021年辽宁省抚顺市全国计算机等级考试C++语言程序设计真题(含答案).docx(38页珍藏版)》请在三一办公上搜索。

1、2021年辽宁省抚顺市全国计算机等级考试C+语言程序设计真题(含答案)学校:班级:姓名:考号:一、L选择题(10题)1.下列关于虚函数的说法中,正确的是()。A.如果在重定义虚函数时使用了保留字VirtUa1,则该重定义函数仍然是虚函数B.虚函数不得声明为静态函数C.虚函数不得声明为另一个类的私有函数D.派生类必须重新定义基类的虚函数2 .数据的存储结构是指()。A.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式C.数据在计算机中的顺序存储方式D.存储在计算机外存中的数据3 .多态性指的是A.以任何方式调用一个虚函数8 .以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或弓I用

2、调用一个虚函数D.借助于指向对象的基类指针或引用调用一个纯虚函数4 .在单链表中,增加头结点的目的是oA.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现5 .下列说法中错误的是()。A.公有继承时基类中的public成员在派生类中仍是public的B.公有继承时基类中的private成员在派生类中仍是private的C.私有继承时基类中的public成员在派生类中是private的D.保护继承时基类中的public成员在派生类中是protected的6 .在C+语言程序中A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用

3、均可以嵌套C.函数的定义和调用均不可以嵌套D.函数的定义不可以嵌套,但函数的调用可以嵌套7 .若已定义inta=1,2,3,4,5,6,7,8,9,10,*p=a,i=5;则对数组元素的不正确的引用是A.ap-aB.*(&ai)C.piD.*(*(a+i)8 .与语句CoUtendl;不等价的是A.cout,n,;B.cout,12;C.cout,xA,;D.cout,+,*,D.l+,*12 .定义无符号整数为Ui叫下面可以作为类Uint实例化值的是()oA.369B.369C.0.369D.整数集合1,2,3,4,513 .用黑盒技术测试用例的方法之一为()。A.因果图B.逻辑覆盖C循环覆

4、盖D.基本路径测试14 .下列有关继承和派生的叙述中,正确的是()。A.派生类不彘访问基类的保护成员B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现15 .算法的空间复杂度是指()。A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数16 .以下程序的执行结果为()。#includeclassSampleintn;public:Sample(inti)n=i;operator+()n+;)前缀重载运算符operator+(int)n+=2;后缀重载运算符voi

5、ddisp()cout,n=nendl;voidmain()SampleA(2),B(2);A+;+B;A.disp();A.disp();)A.n=4B.n=lC.n=3D.n=5n=3n=2n=4n=617 .已知一函数的形参说明为intarr56,则与此等效的形参说明为()oA.intarrB.int5C.int*a6D.int(*a)6(21)以下程序的执行结果是()。#includeclassTestClass2(public:TestClass2();TestClass2(inti,intj);voidprintb();private:inta,b;);classTestClass

6、l(public:TestClassl()TestClassl(inti,intj);voidprinta();private:TcstClass2c;;TestClass1:TestClass1(inti,intj):c(ij)()voidTcstClass1:printaO(c.printb();)TestC!ass2:TestClass2(inti,intj)(a=i;b=j;voidTestClass2:printb()(coutMa=a,nb=Hbendl;voidmain()r(TestClasslm(7,9);m.printa();C) a=7, b=9D) a=8, b=9A)

7、a=7b=8B)a=8,b=719 .下面对静态数据成员的描述中,正确的是()。A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用20 .下列函数的运行结果是()。#includeintf(inta,intb)intc;if(ab)c=l;elseif(a=b)c=0elsec=-1;retum(c);voidmain()inti=2,j=3;intp=f(i,j);coutp:)A.-lB.lC.2D.编译出错,无法运行21 .若变量已正确定义并赋值,以下符合C+语言语法的表达式是()O

8、A.A.a:=b+1B.a=b=c+2C.intl8.5%3D.a=a+7=c+b22 .有如下函数定义:voidfunC(inta,int&B.a+;b+;)若执行代码段:intx=0jY=I;funC(X,Y);则变量X和y的值分别是()。AO和1B.1和1C.0和2D.1和223 .设ima=l,b=2;,则(a+)+b和a+b这两个表达式的值分别为()。A.3,3B.3,4C.4,3D.4,4三、2.填空题(12题)24 .模块的独立程度可以由两个定性标准度量。其中,是度量一个模块功能强度的一个相对指标。25 .请将下列程序的横线处补充完整,使得输出结果为bbaa#includeusi

9、ngnamespacestd;classApublic:coutaa;);classBrpublicApublic:-B()coutbb;);intmain()B*p=new26 .下列程序的运行结果是【】。#includeclassA(inta,b;public:A()a=b=0;)A(intaa,intbb)(a=aa;b=bb;coutabendl;voidmain()Ax,y(2,3),z(4,5);27 .长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。28 .在MyCIaSS类的定义中,对赋值运算符;进行重载。请将横线处

10、缺失的部分补充完整。MyClass:operator=(constMyClass&rhs)(if(this=&rhs)return*this;value=rhs.value;return*this;)29 .某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点O30 .设i,j,k均为int型变量,则执行完for(i=0,j=10;i=j;i+lj-)k=i+j;语句后,k的值为031 .请在下列程序中的空格处填写正确的语句:classSamplepublic:Sample()-Sample()voidSetData(intdalA)将Sample类成员变量data设置成形参的值priv

11、ate:intdata;32 .某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点O33 .Jackson方法是一种面向的结构化方法。34 .Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【】的设计方法。35 .假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为【】。四、程序改错题(10题)36 .使用VC+6.。打开考生文件夹下的源程序文件1cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序

12、的结构,错误的语句在/*error*的下面。试题程序:#includeclassTCpublic:TC(inti)(number=i;)voidSetNumber(intm)(number=m;)intGetNumberconst(retumnumber;)VoidPrintconst(coutnumber=numberendh)private:intnumber;voidmain(I/*error*TCobjhobjl.Print;TCobj2(3);I/*error*objl.number=10;/*error*%0*TC.SetNumber(l00);objl.Print;obj2.Pr

13、int;37 .使用VC+60打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1tt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在I!*error*卜试题程序:#include#include!1*e*0r*usingstd;VoidWriteFile(Char*s)(Ofstreamoutl;!1*e*0r*outl.open(u1.txt,binaryapp);for(inti=0;si!=0;i+)(1i*e*or*outl.puts(si);outl.cl

14、ose;VoidClearFile(Ofstreamoutl;outl.open(,l.txt);outl.close;)intmain(chars1024;ClearFile;coutpleaseinputastrin9:,endl;cin.getline(s,1024);WriteFile(三);return;)38.使用VC+6.O打开考生文件夹下的源程序文件1cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/

15、*e*or*的下面。试题程序:includeiostream.h)intmain(try(throw(error);)/*error*catch(chars)(coutsendl;)try(throw(int)0);)/*error*catch(coutiendh)try(throw(O);throw(error);)II*error*catchcoutERRORendl;returnO;)39 .使用VC+6.。打开考生文件夹下的源程序文件1cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意

16、:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*eror*的下面。试题程序:#includevoidmain(inti=O;charstr120;coutEnterastringendwith?.,endl;/*error*cin.getline(str,120);/*error*while(str)(|/*error*if(stri)=a)stri=stri-a+A;i;)coutstrendl;return;40 .使用VC+60打开考生文件夹下的源程序文件1.cppo本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符时

17、,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#includevoidmain(inti=O;charstrl120J;coutEnterastringendwith?.,endl;!1*e*0r*cin.getline(str,120);while(str)!1*e*0r*if(stri)=a)stri=strij-a+A;+;)coutstrendl;return;41 .使用VC+6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序

18、的输出结果为:number=1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#includeclassTC(public:TC(inti)(number=i;)voidSetNumber(intm)number=m;intGetNumberconstreturnnumber;VoidPrintconstcoutnumber=,numberclassCO(public:Staticintn=O:CO(n+:)CO):!*error*/intCO:n;voidmainCOobj;COobj27

19、;CO*C=NULL:c=&obj:I*error*/eoutC.nendl;coutCO::nclassTC(I*error*/TC(inti)(m_i=i;voidprintcout5)!*er)r*/i+:04.print;)coutendl;return;44.使用VC+6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在!1*error*白勺0Igj试题程序:#include#include|/*e

20、rror*usingstd;VoidWriteFiIe(Char*s)Ofstreamoutl;|/*error*outl.open(,1.txt,binaryapp);for(inti=0;si!=O;i+)!1*error*outl.puts(si);outl.close;VoidClearFileOfstreamoutl;outl.open(u1.txt”);outl.close;intmainchars1024;ClearFile;coutpleaseinputastrin9:,endl;cin.getline(s,1024);WriteFile(三);returnO;)45.使用VC

21、+6.。打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*e*or*的下面。试题程序:includeiostream.h)intmain(try(throw(error);)/*error*catch(chars)coutsendl;try(throw(int)0);)I/*error*catch(coutiendl;)try(throw(O);throw(error);)/*err

22、or*catch(cout,ERRORendl;)returnO;)五、综合应用题(2题)46.使用VC+6.。打开源程序文件3.cpp。其中类TC用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将in.txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件。UtLtXt和out2.txt中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。把获得的输入文件的内容存储到bur中,并且用

23、Ien记录下文件的长度。请在注释2后添加适当的语句。将输入文件的后一半内容存储在第二个文件中,请在注释3后添加适当的语句。使用文件流对象打开输入文件in.txt,请在注释4后添加适当的语句。注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:include#inc1udeincludestdlib.h)ClassTC(public:TC(char*fileName)Ien=O;fstreaminfile;infile.open(fileName,ios:in);charch;while(coutch;)infile,close;)voidsplit(fstr

24、eamoutfilel;fstreamoutfile2;OUtfilel.open(outl.txt,ios:out);outfile2.open(out2.txt,ios:out);inti=O:for(i=0;ilen/2;i+)(OUtfiIelbufi;)do()while(i!=len);OUtfilel.close;outfile2.close;prwate:intlen;charbuf1024:;voidmain(/*4*TCobj;obj.split;return;)47 .使用VC+6.。打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun

25、获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成类的构造函数功能,请在注释1后添加适当的语句。(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。定义类的友元函数fun,请在注释3后添加适当的语句。(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeClassPeoplepublic:inti;for(i=0:sUserNamei!=O;i)m_UserNamei=sUserNamei;m_Old=nOld;

26、private:charm_UserName32;intm_Old;voidfun(char*s,People&personl,People&person2/I*4*iffbr(inti=O;personl.m_UserNamei!=0;i+)(si=personl.m_UserNamei;si+l=0;)else(fbr(inti=O;person2.m_UserNamei!=0;i+)si=person2.m_UserNamei;si+l=0;)voidmain(chars32;Peoplepl(abc,20);Peoplep2(def,30):fun(S,pl,p2);coutsendl

27、:return;六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程test41-3o此工程包含一个test41_3.cpp,其中定义了类ReCtange但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。定义类ReCtangle的私有数据成员left,top和fight,bottom,它们都是im型的数据。请在注释“*1*之后添加适当的语句。添加类ReCtangIe的带四个int型参数1、t、r、b的构造函数的声明,并使这四个参数的默认值均为0,请在注释“*2*”之后添加适当的语句。添加类Rectangle的成员函数SetToPo参数为int型的t,作用为把t的值赋给类

28、的数据成员top,添加类Rectangle的成员函数SetBottomo参数为int型的t,作用为把t的值赋给类的数据成员bottom,请在注释“*3*”之后添加适当的语句。完成派生类Rectangle的成员函数ShoW()的定义,使其以格式“rightbottompointis(right,bottom)”输出,请在注释“*4*”之后添加适当的语句。源程序文件test41_3.cpp清单如下:#includeclassRectanglentright,bottom;D7public:/*2*RectangleO;voidAssign(int1,intt,intr,intb);voidSetL

29、eft(intt)left=t;voidSetRight(intt)right=t;H*3*voidSetBottom(intt)bottom=t;voidShow(););Rectangle:Rectangle(int1,intt,intr,intb)(left=1;top=t;right=r;bottom=b;)voidRectangle:Assign(int1,intt,intr,intb)(left=1;top=t;right=r;bottom=b;)voidRectangle:Show()(coutnIeft-toppointis(nleft,top)”,n,;H*4*)voidma

30、in()(Rectanglerect;rect.Show();rect.Assign(l00,200,300,400);rect.Show();)49 .使用VC6打开考生文件夹下的工程MyPrOj2。此工程包含一个源程序文件MyMain2.cpp.此程序的运行结果为:DerivefsPrint()Called.Derive2,sPrint()called.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。定义函数Print()为无值型纯虚函数。请在注释“*1*”之后添加适当的语句。建立类DeriVeI的构造函数,请在注释“*2*”之后添加适当的语句。完成类Derive2成员函数P

31、rint()的定义。请在注释“*3*之后添加适当的语句。定义类Derivel的对象指针dl,类Derive2的对象指针d2o其初始化值分别为1和2。源程序文件MyMain2.cpp中的程序清单如下:/MyMain2.cpp#includeusingnamespacestd;classBase(public:Base(inti)*protected:intb;);classDerivel:publicBase(public:*2*voidprint()(coutnDerivesPrint()called.Print();)intmain()(*4*fun(dl);fun(d2);return0;

32、)参考答案1.B解析:使用虚函数时必须注意下列事项:只有类的成员函数才能说明为虚函数。这是因为虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为虚函数。静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置。即使虚函数在类的内部定义,编译时仍将其看作是非内联的。构造函数不能是虚函数,因为构造时对象还是一片未定型的空间。只有在构造完成后,对象才能成为一个类的名副其实的实例。析构函数可以是虚函数,而且通常说明为虚函数。说明虚函数的目的在于;使用delete运算符删除一个对象时,能确保析构函数被正确地执行。这是因为设置虚析构函

33、数后,可以利用动态联编方式选择析构函数。一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。ZB解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。3 .C解析:多态性主要是指借助于指向对象的基类指针或引用调用一个虚函数。注意:注意多态和重载的关系和应用。4 .AWA。【解析】头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增

34、加头结点的目的是为了便于运算的实现。n5 .B解析:公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。6 .D解析:本题考查函数的定义,调用及其嵌套之间的关系。7 .D解析:数组和指针的关系非常密切,因为数组名称单独使用是表示数组的首地址。故可用的表示可能是ai,Pi,*u3000(p+i),同样,&ai表示地址,因此*&ai等同于ai。本题答案为D。8 .D解析:题干表示的是回车换行,

35、选项A),选项B)和选项C)都表示回车换行。而选项D)是字符串的结尾标志。9 .D解析:循环队列中,头指针指向的是队头元素的前一个位置,而尾指针的是队尾元素所在的位置,因此队列中元素的个数为(n+RF)mod11o10 .D解析:计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为:软件=程序+文档+数据。选项A、选项B和选项C错误,正确答案是D。ILD解析:运算符重载为成员函数的形式为:函数类型。PeratOr运算符(形参表)函数体;;运算符重载为友元函数的形式为:friend函数类型OPeratOr运算符(形参表)函数体;)。一般来讲,

36、单目运算符最好重载为成员函数,双目运算符最好重载为友元函数。=、口、()、-以及所有的类型转换运算符只能作为成员函数重载。1 2.BB。【解析】A是有符号数,C是浮点数,D是集合,并不是类的实例化对象,只有B完全符合。13 .A解析:黑盒测试主要方法有等价值划分法,边界值分析法。错误推测法、因果图法等。白盒测试的主要方法有逻辑覆盖、基本路径测试循环覆盖等。因此只有A属于黑盒测试。14 .C派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。15 .A算法的空间复杂度是指算法在执行过程中所需要的内存空间。

37、所以选择A项。16.A17 .D解析:二维数组可以看作是一维数组的扩展。选项D表示的是一个一维数不清组,里面每个元素是一个指针,而指针肯定指向某个地址,从而完成二维数组的扩展。考生要注意选项C中*和口的运算优先级。18 .C(21)C)【解析】由主函数mam入手,定义了TeStelaSSlrnrn的对象m,其中参数为7和9。m.printa();中TestClassl中printarnrn为“c.printb();”,其中C为TestClass2的对象,所以printb为TestClass2rnrn中的“voidrnTestClass2:Printb(),即输出为“a=7,b=9019 .D解

38、析:静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。20.A解析:本题的函数是根据a和b的值来给c赋值。21.BBo【解析】本题考查C+语言的正确赋值方法。a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式b=c+2和a=b。选项A中包含一个不合法的运算符:选项C应改为(int)18.5%3;选项D可理解为两个表达式a+7=c+b和a=a+7,其中第一个是错的,因为C+语言规定赋值号的左边只能是单个变量,不能是表达式或常量。22 .C函数参数的3种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用

39、形参。本题中实参X为传值方式,所以X的值不会改变;Y为引用形参,所以会改变。故本题答案为C。23 .A解析:单目的抖运算优先级高于双目的+运算,不过抖的结合性是自右向左的,而+是自左至右的,所以上面的两个表达式都是先计算a+b的值之后,a再自加1。24 .内聚性内聚性解析:衡量软件的独立性使用耦合性和内聚性两个定性的度最标准。内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系。耦合性是模块间互相连接的紧密程度的度量。25 .A()A()解析:此题考查的是类的构造与析构。本题要求输出的结果中包含aa,所以基类A中横线处的函数一定要被执行。横线处应是定义基类的构造或者析构函数,如果定义的是构造,那么aa肯定在new

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号