《2022年广东省深圳市全国计算机等级考试C++语言程序设计真题(含答案).docx》由会员分享,可在线阅读,更多相关《2022年广东省深圳市全国计算机等级考试C++语言程序设计真题(含答案).docx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年广东省深圳市全国计算机等级考试C+语言程序设计真题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 . private访问属性限制对象的成员,可以在()中访问。A.本类的成员函数B.main函数C.父类的成员函数D.子类的成员函数2 .有以下程序 #include using namespace std ; int a ; int fun() ; int main() extern int a ; int b ; a=100 ; b=fun() ; cout b endl ; return 0 ; int fun() extern int a ; return(lO*a)
2、 ; 其程序 运行后的输出结果是()。3 .结构化程序设计的3种结构是()。A.顺序结构、选择结构、转移结构B.分支结构、等价结构、循环结构C.多分支结构、赋值结构、等价结构D.顺序结构、选择结构、循环结构4 .下列运算符中不能在C+中重载的是()A.?: B.+ C.-D. 二5 .关于关键字class和typename,下列描述正确的是()。COobj ;COobj27;COCNULL:c= & obj :不不不不不不不不en*or不不不不不不不不/eoutC . nendl ;coutC0:nendl; )37 .使用VC+6.。打开考生文件夹下的源程序文件1. cpp,该程序运行时有错
3、误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为 error 0ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#include7,1kJ7,1、!7,7,不下不不不不不*r* nor个个个小个个个个catch(chars) coutsendl ;) try throw(int)0);kL# kL* vt*个个个个个个个个rror个个个个个个个个catch coutiendl;throw(O);throw(nerrorn);k|*.t *1 *1 k1 sl
4、 k| kJ个个个个个个个个nc)r个个个个个个个个catch(coutnERRORnendl;returnO ;)38 .使用VC + +6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为: number= 1number=10number= 100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#includeclassTC (public :TC(inti) (number=i ;)voidSetNumber(intm)(number=m ;intGe
5、tNumberconst(returnnumber ;)voidPrintconst (coutnnumber=nnumberendl ;)private :intnumber ;voidmainTCobjl ;objl . Print ;TCobj2(3);/不不不不不不不不eiror不不不不不不不不objl . number= 10 ;I I * ej*j*0* *TC . SetNumber(lOO);objl . Print ;obj2 . Print ; )39 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后
6、一个catch必须抛出执行的任何异常。程序异常,输出信息为 error0ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r*的下面。试题程序:#include、! 7,7,7,7,7,k17, 7,个个个个个个不个rror个个个个个个个个catch coutiendl ;try throw(O);throw(nerrorn);kL* kL*kL* kL*个小个个个不不小nor个个不不不小个个catch coutnERRORnendl ;returnO;40 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有
7、错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *errcr*的下面,修改该语句即可。试题程序:#include/ vl* vl*vL* vL* kL*/不不不不不不error不不不不不不voidmain( / /不不干不不不error不不平不不不intm=0142:/不不不不不不error不不不不不不intn=0X27 :intq=32;cout m endl;cout n endl ;cout q endl;return ;)41 .使用VC + +6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的
8、结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream . h)classTC (inti ;public :TC ;voiddisplay ;TC ;TC : TC coutnConstructornn, i=0;不不不不不不err0r不不不不不不TC : display toutni=nin, nendl ;不不不不不不eu*or不不不不不不TC : TCCOUIHDestructornendl :) voidmainTCa ;a . display ;42 .使用VC+ +
9、6 .0打开考生文件夹下的源程序文件1 .cppo本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输 入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕 中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *error*的下面。试题程序:#include voidmain inti=O ;charstr120;coutnEnterastringendwith? . nendl ;kL* vl*个个不不不小nor个个个不不小不个cin . getline(str, 120);vt* vt*个不个不不个不nor个个个个不
10、个个个while(str)/%X#/不不不不不不下不error不不不、不不不不if(stri)=a)stri=stri-a + A ;i+ + ;coutstrendl ;return ;43 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream. h)classTC (inti;public:TC;voiddisplay;TC;;7 k1 7 7, 7 *i
11、、q. .卜 q.TC:TCcoutnConstructornn,;i=0;kJ kJ kI kIk! kI#k*不不不不下不en*or不不不小小不TC: displaytoutni=ni% nendl;vL*X* *1*error不不不不不不TC:TCCOUInDestructornendl :) voidmain(TCa;a. display;44 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为: number= 1A.程序中所有的class都可以替换为typenameB.程序中所有的typename都可以替换为
12、classC.A和B都可以D.A和B都不可以6 .以下数据结构中不属于线性结构的是()。A.队列B.线性表C二叉树D.栈7 .用树状结构表示实体之间联系的模型是A.关系模型B.网状模型C.层次模型D.以上3个都是8 .若有以下定义:int a口=1,2,3,4,5,6,7);char cl=,bc2=,2,;则数值不为2的表达式是A.al B.d-cl C.a3-c2 D.c2-0 .9 .使用输入/输出操作符setw,可以控制A.输出精度B.输出宽度C.对齐方式D.填充字符10 .人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖 和()。A.数据依赖B.多值依赖C.单值依赖D.数值
13、依赖二、单选题(13题)number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#includeclassTC (public:TC(inti) (number=i;)voidSetNumber(intm)(number=m;)intGetNumberconst(returnnumber;)voidPrintconst (coutnnumber=nnumberendl;)private:intnumber;);voidmain (/不不不小不不不不error不不小不不不不不TCobjl;ob
14、jl. Print;TCobj2(3);7,7,7,k,1 7“ 7,、! 7,个个个*t*不不个下nor个个个个个个个个objl. number=10;/ I * error* *TC. SetNumber(lOO);objl. Print;obj2. Print; )45.使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实 现的功能为从键盘输入一个字符串,并将结果保存到文件1. txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在,卜,j、error的下面。试题程序:#include#inc
15、ludcvl* vl*个不个个个不小个nor个个个个个个个个usingstd;voidWriteFile(char*s)ofstreamoutl ;个不个个个不小个nor个个个个个个个个outl. open(Hl. txtn,binary|app);for(inti=0; si!=0; i + +)*1*vl*个个个个个个个个rror个个个个个个个个outl. puts(si);outl. close;)voidClearFile ofstreamoutl ;outl. open(nl. txt);outl. close;) intmain chars 1024;ClearFile;coutn
16、pleaseinputastrin9 :nendl;cin. getline(s, 1024);WriteFile(s);returnO ;)五、综合应用题(2题)46 .使用VC+6.。打开考生文件夹下的源程序文件3. cpp。其中定 义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出 一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及 总个数,同时允许退货,请按照以下的操作,把类补充完整。定义类TCFruit的私有静态数据成员float型变量AllWeight和int型 变量AHN0,请在注释1后添加适当的语句。完成类TCFruit的带一个float型变量w的构造函数,
17、并把这个w加 到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。(3)在析构函数中,在AllWeight中减去weight,然后析INo自减,请 在注释3后添加适当的语句。(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其 他的程序代码。试题程序:#include(iostream. h classTCFruit (private:floatWeight;/ kL* vl* vl*vL*kL*/IstaticintAHNo;public:TCFruit(floatw)/kJ# kJ* *1*kI#
18、/1、,、q. J rj.卜.卜AllWeight+=w:AllNo+ + :TCFruit/kJ* kJ kJ kJ* .J!/ q. q. 、q. q、q、4 、q, .卜AllWeight-=Weight:)voiddisplay(coutnSellaFruitwithnWeightnk9nendl;coutAllsellnumber:nAllNoendl;coutnAllsellweight:nAllWeightnk9n endlendl;I I *4* floatTCFruit: All Weights. 0;intmain(TCFruitFruitl( 1. 2);Fruitl.
19、display;TCFruitFruit2(2. 3);Fruit2. display;returnO ; )47 .应添加“BA(intm)a=m ;(2)应添力TPAKintm, intn) : BA(n)b=m ; “。应添力 H“PA2(intm, intn, intk) : PAl(n, k)C=m ;y。(4)应添力rcoutwgetavWvgetbvWvCvvendl;。【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构 造函数的名称为BA,在BA中通过参数m完成对成员变量a的赋值, 因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处 的语句应添加
20、“BA(intm)a=m ;f0根据第2处的要求,构造函数的形式 为“PAl(intm, intn)”,m赋值给PA1类成员b,将n作为基类BA构造函 数的参数值传入,故第2处应添力TPAl(intm, intn) :BA(n)b=m ; 根据第3处的要求,函数形式为PA2(intm, intn, intk),在构造函数中 将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参 数 m 和 n,因此第 3 处应添力“PA2(intm, intn, intk) PAl(n, k)C=m 根据第4处的要求,PA2类公有派生于PAI,而PA1公有派生于BA, 因此在PA2类中可以调用基类的g
21、eta和getb来获得基类私有成员a和 b,再输出PA2的私有成员C即满足要求,因此第4处应添加 ttcoutgetangetb*Cendl ;六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程test21_3,此工程包含一个源程 序文件test21_3.cpp,其中定义了用于表示长方形的类CRectangle,但类 CRectangle的定义并不完整。请按要求完成下列操作,将类CRectangle 的定义补充完整。定义CRectangle的构造函数,函数含参数dx, dy, da和db,它们都 是double型的数据,请将类数据成员x, y, a和b初始化,并输出 “CRec
22、tangle Constructed.(另起一行输出该文字)。请在注释“*1*之后 添加适当的语句。(2)完成类CRectangle的成员函数getperimeter。的定义,将以a和b为 边的矩形周长的值返回,请在注释“*2* ”之后添加适当的语句。(3)完成类CRectangle的成员函数getarea()的定义 将以a和b为边的矩 形面积的值返回,请在注释“*3*”之后添加适当的语句。(4)完成类 CRectangle 的友元函数 friend double dist(CRectangle& rt)的定 义,先定义两个double型的临时变量tx和ty,然后将参数对象rt的数 据成员x与
23、a的一半相加,y与b的一半相加,分别赋值给tx和ty,最 后求出tx与ty的平方和的值之后将它的平方根返回,将请在注释 “*4*,之后添加适当的语句。输出结果如下:CRectangle Constructed .Down_Left corner point is:(100, 50)a=1200, b=700Perimeter of this rectangle is:3800Area of this rectangle is:840000The Distance is:806.226CRectangle Constructed.Down_Left corner point is:(200, 1
24、50)a=2000, b=800Perimeter of this rectangle is:5600Area of this rectangle is:1.6e+006The Distance is: 1320.04CRectangle Destructed .CRectangle Destructed .注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test21_3.cpp清单如下:#include #include class CRectangle (private:double x;double y;double a;double b;public:CRecta
25、ngle() (cout nnCRectangle Constructed/* endl;CRectangle(double dx, double dy, double da, double db) (*a=da;b=db;cout nnCRectangle Constructed.n endl;CRectangle () cout nCRectangle Destructed? endl;)void putxy(double dx, double dy) x=dx; y=dy; void putab(double da, double db)( a=da; b=db; double getx
26、() return x;double gety() return y;double geta() return a;double getb() return b;double getperimeter() double getarea() friend double dist(CRectangle& rt););double dist(CRectangle& rt)*4*ty=rt.y+rt.b/2.0;return sqrt(tx*tx+ty*ty);)void main()CRectangle rect;rect.putxy( 100.0, 50.0);rect.putab( 1200.0
27、, 700.0);cout nDown_Left corner point is: ( rect.getx() rect.getyO endl;cout na= n rect.geta() ,b=n rect.getb() endl;cout Perimeter of this rectangle is: n rect.getperimeter() endl; cout Area of this rectangle is: rect.getarea() endl; cout 49.使用VC6打开考生文件夹下的工程test5_3o此工程包含一个源程 序文件test5_3.cpp,其中定义了一个类
28、Pn,用于求n!。请按要求完成下 列操作,将程序补充完整。定义私有数据成员value(存放n)和fact(存放n!),它们都是ht型的数 据。请在注释“*1*”之后添加适当的语句。(2)完成默认构造函数Pn的定义,使Fn对象的数据成员value值为i, fact值为10请在注释“*2*”之后添加适当的语句。完成函数Cal的定义,该函数计算value的阶乘,并将运算结果保存 在fact中,要求使用while循环实现。请在注释“*3*”之后添加适当 的语句。(4)将主函数补充完整,直接调用类的成员函数,在界面上输出value的 阶乘值。请在注释“*4*”之后添加适当的语句。注意;除在指定位置添加语
29、句之外,请不要改动程序中的其他内容。源程序文件test5_3.cpp清单如下:#include class Fn (public :Fn(int i);void Cal();void disp();11 .算法的空间复杂度是指()oA.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数12 .打开文件时可单独或组合使用下列文件打开模式:iosios_base:aopios ase: binaryios base:ios base: out若要以二进制读方式打开一个文件,需使用的文件打开模式为()。A.B.C.D.
30、13 .与语句coutendl;不等价的是()。A.cout n ;B.cout t12,: C.cout xA ; D.cout 。下列表述中错误的是()。A.返回类型,中有可能包含关键字intB.返回类型中有可能包含自定义标识符C.返回类型中衣可能包含字符*D.返回类型中可能包含口);Fn:Fn(int i)()void Fn:Cai()(fact*=i;)void Fn:disp()(cout value != fact endl;)void main()(int value;cout value;Fn A( value);)参考答案LA解析:私有成员只能被本类的成员函数或者友元函数访问
31、。2 .C3 .D结构化程序设计的基本要点:采用自顶向下、逐步求精的程序设 计方法;任何程序都可由顺序、选择和循环3种基本控制结构构造。4 .A解析:本题考查运算符的重载。Ct+中,“::、*、?:”这4个运算 符不能重载。5.B6 .C解析:线性表、栈和队列所表达和处理的数据都以线性结构为组织 形式。7 .C解析:实体之间的关系模型包括层次模型、网状模型和关系模型, 其中,层次模型可以由树状结构来表示。8 .D解析:本题考查数组的定义、初始化及其引用,以及对字符ASCII 码值的熟悉程度。解本题的关键在于熟悉字符的ASCIII码值。字符在 进行数学运算时取其. ASCII码值,其中b的ASC
32、II码值为98, d的 ASCII码值为100,字符2的ASCII :码值为50。根据以上知识,可知 D选项中表达式c2-0的值为50o9 .B解析:setw(n)设置域宽为n,用于输出。10.B解析:人们已经提出了许多种类型的数据依赖,其中最重要的是函 数依赖和多值依赖。1LA算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以 选择A项。12 .D解析:ios_base:binary是作为二进制文件打开,ios_base:out是 为输出而打开;故因选D。13 .D题干表示的是回车换行,选项A、B、c都表示回车换行,而选项D是 字符串的结尾标志。14.BBo【解析】返回类型又称函数类
33、型,表示一个rn函数所计算(或 运行)的结果值类型,这里的类型可以是预定义类型(如int)、复合类型 (如double*)、用户定义类型(如枚举类),若返回值只做更新(或设置)等 操作,则该函数返回类型为void类型,函数类型和内置数组不能作为 返回类型,但类类型和容器类型可以被直接返回。15 .C解析:队列是指允许在一端进行插入,而在另一端进行删除的线性 表。因此队列又称为先进先出的线性表。本题正确答案为选项C。16 .CCo【解析】主函数中调用fun(3),在fun内部当n2时,递归调用 fun(n-1)+fun(n-2),否则返回 2。所以当 n=3 时,调用 fun(2)+fun(l)
34、, 即返回2+2,等于4。17 .C本题考查默认构造函数和带参数的构造函数,题目中定义一个对象 a(2)以及对象数组b3,共执行4次构造函数,对象指针不调用构造函 数。所以本题答案为c。18 .C19 .C解析:本题考查了函数的一些概念。内联函数是在一般函数定义之前 加上关键字u3000inline声明的函数,其作用类似于预处理宏函数,而 不是定义在另一个函数体内部的函数,所以选项A不正确。在无返回 值函数中,执行完最后一条语句后将自动返回,而不必加入return语 句,所以选项B也是错误的。如果函数只是返回值类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数宋使用,所以选项D不正
35、确。故应该选择C。20.BBo【解析】voidf(int*X, int&。y);第一个参数需要取值,第二个参 数需要取地址,所以为vl为取值,&Lv2为取址。21 .D解析:*(p+4)即数组元素str4的值,而str中存放的是字符0二 所以输出的是一个空字符。22 .C根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是 比度为2的结点多一个。1 3.B解析:对象属于某个已知的类,是类的实例,对象之间通信实际上 就是通过函数传递信息,封装是把数据和操作结合在一起,继承是对于 类的方法的改变和补充,重载是多态性之一。24 .newnew解析:new运算符对指定类型对象动态分配内存并
36、返回该类 型的指针。25 .事务型事务型解析:数据流图中有众多的加工,但必有一个加工是 起核心作用的,这样的加工称为中心加工。由数据流图导出结构图的关 键是找出中心加工。一般来说,中心加工有两种存在形态,即数据流图 有两种典型的结构形式:一种是变换型,另一种是事务型。26 .黑盒或者黑箱黑盒或者黑箱解析:软件测试的方法。27 .递归递归 解析:如果一个对象部分地包含自己,或自己定义自己, 则称这个对象是递归的对象。28 .friend FriendClass ;friend FriendClass ;解析:本题考核友元类的声 明。友元类可以在另一个类的公有部分或私有部分进行说明,说明的方 法为:friend类名;29 .拷贝构造。拷贝构造。解析:本题考查的是拷贝构造函数的定义, 它是一种特殊的成员函数,作用是使用一个已知的对象来初始化一个被 创建的伺类的对象,定义格式是类名::拷贝构造函数名(类名乙引用名)。 30.1 23451 2345解析:本题考查的是考生使用简单循环输出数组元 素的能力,因为结束条件是inn25;”或“intn=0x25;41 .(1)应改为“