2022年福建省漳州市全国计算机等级考试C++语言程序设计真题(含答案).docx

上传人:太** 文档编号:97970274 上传时间:2024-07-08 格式:DOCX 页数:48 大小:68.48KB
返回 下载 相关 举报
2022年福建省漳州市全国计算机等级考试C++语言程序设计真题(含答案).docx_第1页
第1页 / 共48页
2022年福建省漳州市全国计算机等级考试C++语言程序设计真题(含答案).docx_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《2022年福建省漳州市全国计算机等级考试C++语言程序设计真题(含答案).docx》由会员分享,可在线阅读,更多相关《2022年福建省漳州市全国计算机等级考试C++语言程序设计真题(含答案).docx(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022年福建省漳州市全国计算机等级考试C+语言程序设计真题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 . 有以 下程序 :#include using namespace std;class sample private: int x; static int y;public: sample(int a); static void print(sample s);sample: sample(int a) x=a; y+=x;void sample: print(sample s) cout nx=n s. x y end 1;intsample: y=0;int main

2、() sample sl(10); sample s2(20); sample: print(s2); return 0;程序运行后的输出结果是()oAx=10,y=20 B.x=20,y=30 Cx=30,y=20 D.x=30,y=302 .有如下程序 #include #include usingnamespace std; class MyClass public:MyClass() cout A; MyClass(char c) cout c; MyClass() cout E; ;int main()MyClass pl,*p2;p2=new MyClass(X);delete p

3、2;return 0;执行这个程序 屏幕上将显示输出()oA.ABX B.ABXB C.AXB D.AXBB3 .多态性指的是A.以任何方式调用一个虚函数8 .以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或引用调用一个虚函数D.借助于指向对象的基类指针或引用调用一个纯虚函数性和运行时的多态性。32 .一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,33 .将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为【】。34 .若深度为5的完全二叉树的第5层有3个叶结点,则该二叉树一共 有【】个结点。35 .若有以下程序:#include using namespac

4、e std;class sample(int x;public:sample() void setx(int i)(x=i;)friend iht fun(sample B,int n)(int m=0;forint i=0;i m)m=Bi.x;return.m;)int main ()(sample A 10;int arr =90,87,42,78,97,84,60,55,78,65;for(int i=O;i 10;i+)Ai.setx(arri);cout fun(A, 10) classTC(/不不不不不不不不erpor不不不不不不不不/TC(inti)(m_i=i ;voidpr

5、intcoutm_i, public :intm_i ;intmain不不不不不不不不e不不不不不不不不inti ;TC04(10);while(i5)! * *ej*j* * * !1+ + :04 . print ;) coutendl ;returnO ;)37.使用VC+ +6 . 0打开考生文件夹下的源程序文件1 . cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现 的功能为从键盘输入一个字符串,并将结果保存到文件1 .txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在的下面。试题程序:#include#include个个个个个

6、个个个nor个个个个个个个个usingstd ;voidWriteFile(char*s) ofstreamoutl ;7 7 7 7,7 7 7 77 7,7,7 7 7 7,7个个个个不不不个nor个个不不不个个个outl . open(nl . txt, binary|app);for(inti=0 ; si!=0 ; i + +)k! 7,7,7,7,7 7,7,7 7” 个个干不不不个不不不不个个个个个outl . puts(si);)outl . close ;)voidClearFile(ofstreamoutl ;outl . open(nl . txt);outl . clo

7、se ;)intmain(chars 1024;ClearFile ;coutnpleaseinputastrin9 :nendl ;cin . getline(s, 1024);WriteFile(s);returnO ;38 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream. h) classTC inti;public:TC;voiddisplay;TC

8、;TC: TCcoutnConstructornn, i=0;不不不不不不erpor不不不不不不TC: display toutni=nin, nendl;TC: TCCOUInDestructornendl : voidmainTCa;a. display;39 .使用VC+6.。打开考生文件夹下的源程序文件1. cpp。本程序 要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可 能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出 到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r*的下面。试题程序:#i

9、nclude voidmain(inti=O;charstr120;coutnEnterastringendwith?nendl ;/不不小不小个不小error不不小不不不不不cin. getline(str, 120);/ 7 7,77 7,7 7, 7/不不不不不不不不error不不小不不不小不while(str) (/不不不不不不不不enoi*不不不不不不不不if(stri)=a)stri=stri-a+A; i+ +;)coutstrendl;return ; )40 .使用VC + +6. 0打开考生文件夹下的源程序文件1. cpp,该程序 运行时有错误,请改正错误,使程序正常运行,

10、并且要求最后一个 catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#include个个个个个个个个个个个个个小个个catch(coutiendl;) try(throw(O);throw(nerrorn); )*1* *1 1个个个个个个个个rror个*个个个个个*catch (coutnERRORnendl ;)returnO ;)41 .使用VC + +6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,

11、使程序的输出结果为:number= 1number=10number= 100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#includeclassTC (public :TC(inti) (number;)voidSetNumber(intm)(number=m ;)intGetNumberconst returnnumber ;voidPrintconst coutHnumber=nnumberendl ; )private :intnumber ;voidmainvt*vt*个个个个个不个个nor个个个不小个个个

12、TCobjl ;objl . Print ;TCobj2(3); objl . number= 10 ;*1* 1* 1* *Jk!*Tw Tw *T* rT* rT* *T* T*error! 1 * error* 0 * *TC . SetNumber(lOO);objl . Print ;obj2 . Print ;42 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为100374,若有以下定义:inta=l, 2, 3, 4, 5, 6, 7) ;charcl=b,c2=2;则数值不为2的表达式是()。A.al B.d

13、-cl C.a3-c2 D.c2-05 .以下程序企图把从键盘终端输入的字符输出到名为abc.txt的文件中, 当从终端读到字符#时,结束输入和输出操作。但该程序有错。include #include using namespace std; int main() ofstream ofile; char ch; ofile.open(nd:abc.txtn, W); do cin ch; ofile.put(ch); while(ch!=#); ofile.close(); return 0; 程序出错的原因是()。 A.成员函数open调用形式错误B.输入文件没有关闭C.成员函数put调

14、用形式错误D.对象ofile定义错误6 .设树T的度为4,其中度为1, 2, 3, 4的结点个数分别为4, 2, 1, lo则T中的叶子结点数为A.5 B.6 C.7 D.87 .已知在一个类体中包含如下函数原型:VOLUME operator- (VOLUME)const ;,下列关于这个函数的叙述中,错误的是()。A.这是运算符一的重载运算符函数8 .这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值8.以下哪个基类中的成员函数表示纯虚函数?32注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include void

15、main intm=0142:/不不不小小不en*or不不不intn=0X27 :intq=32;cout m endl ;cout n endl ;cout qendl;return ;43 .使用VC + +6.0打开考生文件夹下的源程序文件1.cpp,该程序运 行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果 为:sizeof(Sl)=5 sizeof(s2)=10 sizeof(s3)=l注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *eiror*的下面。不能删除assert ()语句。(2)只能修改后面的数字。提示:assert

16、函数如果为假,则会产生一个中断异常。试题程序:#include #include voidmain () chartsl=nabcn:errorassert(sizeof(s 1 )=3):coutnsizeof(sl)=5nendl ;chars210=nabn:j, 一一、.J、.j、.卜error、,j、assert(sizeof(s2)=2);coutnsizeof(s2)=10nendl ;chars3=23 :*1* *1* *1* *1* *1*1*Tw *T* *T* rT* *1* si* *J*T*T rj* rTw rr* rT*assert(sizeof(s3)=4);

17、coutnsizeof(s3)=r,endl ;44 .使用VC + +6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream . h)classTC (inti ;public :TC ;voiddisplay ;TC ;TC : TC coutnConstructornn, i=0;vL*vl#一不不不不不ej*por个.0可个不不TC :displaytoutni=nin,

18、 nendl ;不不不不不不en*orTC : TCCOUInDestructornendl :) voidmain(TCa ;a . display ;45 .使用VC + +6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实 现的功能为从键盘输入一个字符串,并将结果保存到文件1. txt中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在* eiror* * - 自 j试题程序:#include #include usingstd;voidW riteFile(char* s)ofstreamout l

19、 ;outl. open(nl. txt, binary|app);for(inti=0; si!=0; i+ +)vl*vl*vL* vl* *1*个不不不不不不个nc)r个个个不不个个个outl. puts(si);outl. close;voidClearFile ofstreamoutl ;outl. open(,fl. txt”);outl. close;) intmain chars 1024;ClearFile;coutnpleaseinputastrin9 :nendl ;cin. getline(s, 1024);WriteFile(s);returnO ;五、综合应用题(2

20、题)46.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程 proj3,其中包含了类IntegerSet和主函数main的定义。一个Integerset 对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了 便于进行集合操作,这些整数按升序存放在成员数组elem的前若干单 元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不 存在该元素),成员函数remove从集合中删除指定的元素(如果集合中 存在该元素)。请编写成员函数remove。在main函数中给出了一组测 试数据,此时程序的正确输出结果应为:2 3 45 27 28 31 66 75 2 3 45 6

21、2728 31 5675 2 3 45 6 19272831 66 75 3 45 6 1927 28 31 66 75 3 45 6 1927 28 31 66 75 要求:补充编制 的 内 容写在* *333 *与不得修改程序的其他部分。“*666* 间 注意:程序最后将结果输出到文件out. dat中。输出函数writeToFile 已经编译为。bj文件,并且在本程序中调用。/IntegorSet. h#ifndef INTEGERSET#define INTEGERSET#includcusing namespace std;const int MAXELEMENTS=100;集合最多

22、可拥有的元素个数class IntegerSetint elemMAXELEMENTS;用于存放集合元素的数组int counter;用于记录集合中元素个数的计数器puhlic:IntegerSet :counter(O) 创建一个空集合IntegerSet(int data口,int size);利用数组提供的数据创建一个整数集合void add(int element);添加一个元素到集合中void remeve(int element);删除集合中指定的元素int getCountconst return counter ; 返回集合中元素的个数int getElement(int i)

23、constreturn elemi; 返回集合中指定的元素void showconst;;void WriteToFile(char*);#endif/main. cpp #includeIntegerSet. h#includeIntegerSet: IntegerSet(int data口,int size): counter(O)for(int i=0; i0; j-)if(element=elemj 一 l)break;如果找到的是等于element的元素,说明要添加的元素己经存在,直接返回if(j0)if(element=elem j-1 ) re turn ;如果找到的是小于ele

24、ment的元素,j就是要添加的位置该元素及其后面的元素依次后移,腾出插入位置for(int k=counter; kj ;k 一)elemk=elemk 1;elemj=element;将 element 插入到该位置counter+ ; 计数器加1void IntegerSet: remove(int element)(/ / 7, 7 7,7 7,7/7 7” 7, 7,7* 7“ 7, 7”74 7, T,7” 7,7“ 7” 7” 7, 7, 7* 7, 7“ 7, 7”/ / 卜 q. vL*/ /-卜-J、/I、卜-J、void IntegerSet: showconst for(

25、int i=0; igetCount ; i+) coutsetw(4)getElement(i);coutendl :)int main intd=5, 28, 2, 4, 5, 3, 2, 75, 27, 66, 31;IntegerSet S(d, 11); S. show;S. add(6); s. show;S. add(19); S. show;S. remove(2); s. show;S. add(4); S. show;writeToFile(,);return 0 ; )47 .(1)应添加virtualvoidGetNamt!=0 ;(2)应添力rconstchadGet

26、NameZ”。(3)应添加“TC2(char*str)”。(4)应添加“m_stri=0 ;【解析】本题第1处要求“在类TC1中定义接口函数GetName,为纯虚 函数在C+中,在基类中用virtual声明成员函数为虚函数。纯虚 函数是在声明虚函数时被初始化为。的函数,即 44virtualvoidGetName=0 ; 第2处要求“函数GetName2实现获得名字 的缓存,但只获得读允许操作这个缓存:只能引用数据成员,而不能修 改,所以使用常成员函数,其一般形式为“const函数类型函数名”,即ttconstchar*GetName2,o第3处要求“实现TC2的构造函数:TC2的构 造函数与

27、类TC2的名称应该相同,而且第3处的大括弧中是对字符数 组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为 “TC2(char*str)”第4处要求“完成TC2的构造函数,实现对名字的处 理”,补全类TC2的构造函数,构造函数中的名字变量str对应于类TC 中的成员变量m_str,所以这里补全变量赋值操作“m_st巾=0 ;六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程testl2_3,此工程包含一个 testl2_3.cpp,其中定义了类Base和类A,类A公有继承Base,但这两 个类的定义都并不完整。请按要求完成下列操作,将程序补充完整。 定义枚举类

28、型变量en,它包含两个枚举符front和back,请在注释 “*1*,,之后添加适当的语句。(2)在类Base中添加常成员虚函数void E()的定义,该函数输出“In Base E!”,请在注释“*2*”之后添加适当的语句。在类A中添加常成员虚函数voidE()的定义,该函数先调用基类中的 虚函数E()再输出“InAE!”,请在注释“/* 3*”之后添加适当的语句。(4)完成类A构造函数的定义,请使用参数列表的形式初始化类A的成 员,并输出“A constructor.,请在注释“/* 4*”之后添加适当的语句。 输出结果如下:A.virtual void vf(int)8 .void vf

29、(int)=0C.virtual void vf(=0)D.virtual void yf(int) 9 .下面的哪个选项不能作为函数的返回类型?A.void B.int C.new D.long10 .算法的空间复杂度是指()oA.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储 空间D.算法执行过程中所需要的存储空间二、单选题(13题)口 26.下面程序的运行结果为(# include void mainOchar a= 3 ; switch(a)(case 3: coutM3n;case 2: coutH2H; break;default : cout(w 1M ; ,B.

30、321D.32A. 3.C.3112.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度Base constructor.A constructor.In BaseE!InAE!In BaseP!In A!1A destructor.Base destructor.注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。源程序文件testl2_3.cpp清单如下:#include * * class Base (protected :int bl ;int b2 ;public :Base();Base();int Getbl()const return b 1 ; void S

31、etbl(int x) bl = x ; int Getb2()const return b2 ; void Setb2(int y) b2 = y ; void Print()const cout In Base P!n endl ; * 2 *);Base : Base() : bl(l), b2(5)cout Base constructor . n endl ;Base :Base() (cout Base destructor/ endl ;)class A : public Base (protected :en enA ;public :A();A();en GetColor()

32、const return enA ; void SetColor(en color) enA 二 color ;void InA()cout nInA!n endl ; / * 3 * (Base : E();cout nIn AE!n endl ;);II * 4 * (cout nA constructor. endl ;A :A()cout A destructor.n endl ;void main() (A al ;al.E();cout endl ;al.Print();al . InA();cout al.Getbl() endl ; 49.使用VC6打开考生文件夹下的工程MyP

33、roj4o此工程包含一个源程 序文件MyMain4.cpp,该程序将通过把类Distance定义为类Point的 友元类来实现计算两点之间距离的功能。但程序中定义的类并不完 整。请按要求完成下列操作,把类的定义补充完整。把类Distance定义为类Point的友元类。请在注释“*1*”之后添加 适当的语句。定义类Point的构造函数,完成给私有数据成员x和y的赋值,并且 两个参数的默认值都为0o请在注释“*2*”之后添加适当的语句。完成类Distance的成员函数Dis(Point &p,Point &q)的定义,并在其 中计算点p、q之间的距离,并且返回结果。假设两点之间的距离 distan

34、ce=sqrt(p.x-q.x)* (p.x-q.x)+(p.y-q.y)*(p.y-q.y)。请在注释“*3*之后添加适当的语句。源程序文件MyMain4.cpp中的程序清单如下:/MyMain4. cpp#include#include using namespace std;class Point ( public:*/定义类Point的构造函数/ /* * 2 * * void pint() (cout x end 1;cout y= y endl;)private: float x,y;);class Distance ( public:float Dis(Point &p, Poi

35、nt &q););float Distance : Dis(Point &p, Point &q) (* * 3 * *)int main ()(Point p(10/0),q(20,20);Distance d;cout d.Dis(p,q) end 1;return 0; )参考答案1.B2 .D3 .C解析:多态性主要是指借助于指向对象的基类指针或引用调用一个 虚函数。注意:注意多态和重载的关系和应用。4 .D5 .A解析:本题考核文件的打开。C+中,可以在定义文件流对象的同 时打开文件,也可以在定义文件流对象以后用。pen()函数打开文件。可 以通过构造函数或open函数的第2个参数,

36、确定文件的打开模式。打 开模式用下列常量表示:ios_base:app为添加数据而打开(总是在文件尾部写);ios_ase:binary作为二进制文件打开:ios_ase:in为输入而打开:ios_ase:out为输出而打开;ios_base:tmnc若文件存在,截为空文件;ios_base:ate打开时定位于文件尾。题中成员函数open()的第2个实参不符合C+的打开模式,所以产生调 用错误。6 .D解析:根据给定的条件,在树中,各结点的分支总数为: 4x1+2x2+1x3+4x1=15 :树中的总结点数为:15(各结点的分支总数)+1(根 结点)=16 :非叶子结点总数为:4+2+1+1=

37、8。因此,叶子结点数为16(总 结点数)-8(非叶子结点总数)=8。因此,本题的正确答案为D。7 .A解析:重载的是一个二元运算符“一”,所以此题选择A。8 .B解析:C+中纯虚函数的定义与虚函数的关键字一样,在函数末尾 要加上“二0”。9 .C解析:new是动态申请内存空间时使用的关键字,不能作为函数的 返回类型,选项A)为无返回值,选项B)为返回整型,选项D)为返回 长整型。10 .D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。 一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据 所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括 算法程序执行过程中的

38、工作单元以及某种数据结构所需要的附加存储 空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地 工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用 压缩存储技术,以便尽量减少不必要的额外空间。11 .D12 .DD【解析】根据二叉树的基本性质3 :在任意一棵二叉树中,多为0 的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1- 1=0个,所以可以知道本题目中的二又树的每一个结点都有一个分支, 所以共7个结点共7层,即度为7。13.AAo【解析】a是类AA的非静态数据成员,在类AA的成员函数中可 以直接访问。B是访问静态数据成员的方式,C和D都是访问函数的 方式。

39、14 .CC【解析】栈是先进后出的数据结构,在整个过程中,栈底指针不 变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C。15 .A解析:本题考查的是getline。函数。getline。函数的原型为: istream_type& getline(char_type*s, streamsizen, char_type delim);, 其 功能是从当前输入位置开始提取字符存入s所指向的具有n个字节的 字符空间中。字符的提取与存储在遇到下列情况时停止:己提取并存储了 n-1个字符;到流尾,无字符可提取;下一个要提取的字符等于结束标志字符delimo因此,选项B、C、D都是正确的。getlin

40、e。函数不仅可以用宋读取键 盘输入的字符串,还可以用来读取文件等数据流,故选项A不正确。16 .CCo【解析】上述类的定义共有三处错误:类的成员变量不能在定义 时进行初始化;类的构造函数不能有返回值(包括void类型);类 的析构函数不能有参数。17 .A解析:本题考查的是派生类对象的析构。释放派生类对象时,析构函 数的执行顺序如下:(1)调用派生类自身的析构函数;(2)调用派生类成员对象的析构函数;(3)调用基类的析构函数。所以,本题的四个选项中,只有选项A正确。18 .C基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl 是虚函数;而类A中的func2没有被关键字virtu

41、al修饰,所以不是虚 函数。19 .D本题主要考查了函数重载。函数重载允许用同一个函数名定义多个函 数。被重载的函数必须要有不同的形参列表(即参数个数不同或参数类 型不同),不可以根据函数返回值类型来重载函数。20 .A解析:在类的定义中,类的数据成员和成员函数可在类中声明,在 类中或者类外定义均可。在类外定义成员函数时,要加上类名和域作用 符,类名:为前缀,在类中的成员的默认访问权限为私有的。21 .D解析:本题考核软件测试、软件调试和软件维护的概念。软件测试的 目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程 序可靠性的鉴定。软件测试具有挑剔性,测试不是为了证明程序是正 确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现 错误;一个好的测试在于能发现至今未发现的错误;一个成功的测试 是发现了至今未发现的错误。由于测试

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁