《2023年四川省绵阳市全国计算机等级考试C++语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2023年四川省绵阳市全国计算机等级考试C++语言程序设计预测试题(含答案).docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年四川省绵阳市全国计算机等级考试C+语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .树是节点的集合,它的根节点数目是A.有且只有1 B.1或多于1 C.0或1 D.至少22 .下面关于C+流的叙述中,正确的是 oA.cin是一个输入流对象B.可以用ifstream定义一个输出流对象C.执行语句序列char*y=PQMN” ; cout y ;将输出字符串“PQMN”的 地址D.执行语句序列 charx80 ;cin . getline (x,80);时,若键入 Happy new year,则x中的字符串是“Happy”,3 . C+中运算符优先级由
2、高到低排列正确的是A.: + + | B. salary ;C.x=orker, salary ;(其中worker为具有类类型的对象)object:object(int i) val=i ;cout Constructor for object” val endl ; object:object() cout nDestructor for object” val endl ; class container private :object one ;object two ;int data ;public :container();container(int i, int j, int k
3、);container() ; ; container: :container() data=0 ;cout Default constructor for containern endl ; container: :container(int i, int j, int k) : two(i), one(j) data=k ;cout Constructor for containern endl ; container:contained ) cout n Destructor for container11 endl ; void main() container anObj(5, 6,
4、 10) ; 31.若有: int i=1000 ;int*ip=&i ;void*VP ;vp=ip ;其中,vp=ip的含义是o32 .在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功 能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成 程序。33 .在C+中,若需要在程序文件中进行标准输入输出操作,则必须在 开始处加入预处理命令#由&11(1 ,若使用到数学库中的函 数时,要在源程序的开始处加入预处理命令【】。34 .当派生类中有和基类相同名字的成员时,派生类的同名成员会【】 基类的成员。35 .软件是程序、数据和 的集合。四、程序改错题(10题)36 .使用VC+
5、6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为error0ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#include vt*个个个个不不不不rrcr不不个个个个不不catch coutnERRORnendl ;returnO;37 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *
6、errc)r*的下面,修改该语句即可。试题程序:#includekL*不不不不不不enor不不不不不不voidmainvl* kL* kL*kL*不不不不不不enor不不不不不不intm=0142:intn=0X27:intq=32;cout m endl;cout n endl ;cout q endl;return ;38 .使用VC+ + 6.0打开考生文件夹下的源程序文件1 .cppo本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输 入多行,当输入字符?”时,默认字符输入结束,最后把结果输出到屏幕 中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的
7、结 构,错误的语句在/ / *error*的下面。试题程序:#include voidmain inti=O ;charstr120;coutnEnterastringendwith? . nendl ;vl* vl* vt*vt*1# k*不不不不不不不不不不不不不不不不cin . getline(str, 120);while(str) if(stri)=a) stri=stri-a + A ;1+ + ;coutstrendl ;return ;39 .使用VC+ +6.0打开考生文件夹下的源程序文件1 .cpp,该程序运 行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果
8、为:sizeof(Sl)=5 sizeof(s2)=10 sizeof(s3)=l注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。(1)不能删除assert ()语句。只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include#include voidmain () char*sl=nabcn:个个个个个个个个nor个个个个个个个个assert(sizeof(s 1 )=3): coutnsizeof(sl)=5nendl ;chars210=nabM:,、errorassert(size
9、of(s2)=2);coutnsizeof(s2)=10nendl ;chars3=23 :si*rerrorassert(sizeof(s3)=4);coutnsizeof(s3)=r,endl ;return ;40 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/ *error* /的下面。修改该语句即可,其他的语句不能修改。试题程序:#include(iostream. h classCO public:个个个个个个个小个个个个个个个个staticintn=O :CO
10、 (n+ + :CO(n::errork1*k*intCO: n;voidmain(COobj ;COobj27;CO*C=NULL:c= & obj :*J kJ *JkI* *j *j个个个个个个个个nor个个个个个个个个eoutC . nendl ;coutCO: nendl;41 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可 能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出 到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r
11、*的下面。试题程序:#include voidmain inti=O;charstr120;coutnEnterastringendwith?. nendl;vl* kL* vf* vl*个个个个不不不小nor小个个个不小个个cin. getline(str, 120);个个个个个个个个nor个个个个个个个个while(str)kIKL KL*个个个个个个个个nor个个个个个个个个if(stri)=a)stri=stri-a+A;i+ + ;)coutstrendl ;return ; )42 .使用VC+6.。打开考生文件夹下的源程序文件1. cpp,该程序 运行时有错,请改正其中的错误,使
12、程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即 可。试题程序:#include(iostream. h)classTC (inti;public:TC;voiddisplay;TC;D.Location &rA=Al ; Int x=rA. GetXQ ; (Location 为已定义的类,A 为对 象)5 . 定 义 如 下 枚 举 类 型 : enumMonday,Tuesday,Wednesday,Thrusday,Friday=2;则下列语句正确 的是()oA.表达式 Wednesday=Fr
13、iday 的值是 trueB.Day day;day=3C.Day day;day=Monday+3 D.Day day;day=Tuesday +106 .下列程序的输出结果是 #include class Myclass public:Myclass(int i = 0,int j = 0) x = i; y = j; void show() cout x = x y = y endl; void show( ) constcout nx = n n n ny = n y 不不个个个不en0r不不不不不不TC: TC coutnConstructorf!n, i=0;sik|不不不不不不e
14、nor不小不不不不TC: display toutni=nin, nendl;7, 7, 不不小小个不en*or不不不小不个TC: TCCOUInDestructornendl :voidmainTCa;a. display;43.使用VC + +6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实 现的功能为从键盘输入一个字符串,并将结果保存到文件1. txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在* error* * 白勺 _j 日 jo试题程序:#include#includekI个个个个个个
15、个个rror不不不不个不不不usingstd;voidWriteFile(char*s) ofstreamout l ;kI# kL*个个个不不不不不个个不不不不不不outl. open(nl. txt, binary|app);for(inti=0; si!=0; i+ +)*J kL*kL个个个个个个个个nor不不不不不不不不outl. puts(si);outl. close;)voidClearFile ofstreamoutl ;outl. open(nl. txt);outl. close;) intmainchars1024;ClearFile;coutnpleaseinputa
16、strin9 :nendl;cin. getline(s, 1024);WriteFile(s);returnO ;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;7, 7,kI、! k! k!
17、 不不个个不不enor不小不不不不TC : display tout下不不不不不eno不不不不不不TC : TCCOUInDestructornendl :)voidmain(TCa ;a . display ;45 .使用VC+ +6.0打开考生文件夹下的源程序文件1 .cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number= 1number= 10number= 100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#includeclassTC (public :TC(inti) (n
18、umber=i ;)voidSetNumber(intm)(number=m ;) intGetNumberconst(returnnumber ;)voidPrintconst(coutnumber= nnumberendl ;)private :intnumber ;voidmain*1*,卜TCobjl ;objl . Print ;TCobj2(3);*1,卜.卜.卜 、,j、error*1 *1 *1*1、4、,卜,j、.j、.j、.1、objl . number= 10 ;I ! * enor* * *TC . SetNumber(lOO);objl . Print ;obj2 .
19、 Print ;五、综合应用题(2题)46 .使用VC+6. 0打开考生文件夹下的源程序文件3. cpp。其中定 义的类不完整,按要求完成下列操作,将类的定义补充完整。定义类的公有数据成员函数NO、Name32,其中NO是int型的数据,Name32为字符型。请在注释1后添加适当的语句。(2)完成函数Set的定义,分别设置NO和Name的值,请在注释2后添 加适当的语句。完成函数print,请在注释3后添加适当的语句,输出结果如下:N0=12345Name=HelloWorld!(4)添加默认构造函数,设置NO为0, Name为空,请在注释4后添加 适当的语句。注意:增加或者修改代码的位置已经
20、用符号表示出来,请不要修改其 他的程序代码。试题程序:#include classTC public:k1 k! *11 k1 k1 K,t 1 *J vl k J kJ kI kJ k1yw *J*rywIrj* ryw /, ,、/、r7 -j、No=no;for(inti=0; strNamei!=O; i+ +)Namei=strNamei;Namei+1=0;)voidprint ()TC ()/ I *4*);intmain ()TCstu:stu. Set( 12345, HelioWorld!H); stu. print () returnO;47 .使用VC+6. 0打开考生
21、文件夹下的源程序文件3. cpp。请完成 以下部分,实现在屏幕上输出为C3C2这个程序需要修改的部分,请按照以下部分实现。类CO不能被实例化,请定义一个纯虚函数print,在注释1后添加 适当的语句。类C1私有虚继承类CO,请在注释2后添加适当的语句。(3)类C2公有继承于CO,请在注释3后添加适当的语句。(4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修 改其他的程序代码。试题程序:#include(iostream. h)classCO(/1/I);/kJ sl/ rj* ryw rT* rT*J rT* rrwrj*
22、 rT* rTwclassCl:public:voidprint coutClH/pwclassC2:(public:voidprint(coutnC2nendl;);/ I *4*x* classC3:(public:voidprint(coutC3endl;);voidmain(C3Obj3;C20bj2;obj3. print;obj2. print;return ; )六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程MyProj5。此工程包含一个源程 序文件MyMain5.cpp,其中定义了用于表示日期的类Date,但类Date 的定义并不完整。请按要求完成下列操作,
23、将类Date的定义补充完成: 定义私有数据成员lengths width和label,其中length、width是int 型,label是类point的对象。它们分别表示长方形的长、宽以及坐标点。 请在注释“* 1 * ”之后添加适当的语句。完成构造函数square的定义,使square对象的默认值为: lengths,widths, label(0, 0),请在注释“*2*”之后添加适当的语句。 完成重载构造函数square(int l,int w,int x,int y)的定义,把数据成员 lengths width和对象label分别初始化为参数1、w、x和y的值,请在 注释“*3*,
24、之后添加适当的语句。完成成员函数get_area()的类外定义,此函数的功能是返回此长方形 的面积,及返回length*width的值。请在注释“*4*”之后添加适当的 语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件MyMain5.cpp清单如下: /MyMain5.cpp#include A.int B.float C.double D.不确定8 .一个类的友元函数或友元类能够通过成员操作符访问该类的()。A.私有成员B.保护成员C.公有成员D.公用成员、保护成员和私有成 贝9 .软件测试过程一般按4个步骤进行:单元测试、集成测试、验收测试 (确认测试)和系统测
25、试。在程序编码阶段进行的测试通常是 0A.单元测试B.集成测试C.验收测试(确认测试)D.系统测试10 .有以下程序 #include voidmain() inta=5, b=0, c=0; if(a=b+c)cout *” endl : else cout $ endl ; 下 列选项叙述正确的是()。A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出*D.输出$二、单选题(13题)11 .下面程序的结果是 #include class A int a ;public : A():a(l) voidshowa( )cout a ; ; class B inta ; public
26、 : B(): a(2) void showa( )cout a ; ; class C : public A, public B int a ; public : C() : a(3) void showa( )cout a ; ; void main() C c ; c . showa() ; A.1B.2C.3 D.程序有错误using namespace std; class point private: int x,y;public:void set (int ijnt j)mt get_y ()return y;);class square(*public:* * 2 * *squ
27、are(int l,int w, int x, int y)(* * B * *)void set(int l,int w)(length= 1;width=w;)int get_area() const(return length*width;);int square:get area() const(/* * 4 * *)int main()(square small(2,4,l,35);cout small.get_area() endl;return 0;49.使用VC6打开考生文件夹下的工程MyProj4o此工程包含一个源程 序文件MyMain4.cpp,该程序将通过把类Distan
28、ce定义为类Point的 友元类来实现计算两点之间距离的功能。但程序中定义的类并不完 整。请按要求完成下列操作,把类的定义补充完整。把类Distance定义为类Point的友元类。请在注释“*1*之后添加 适当的语句。定义类Point的构造函数,完成给私有数据成员x和y的赋值,并且 两个参数的默认值都为0o请在注释“*2*”之后添加适当的语句。完成类Distance的成员函数Dis(Point &p,Point &q)的定义,并在其 中计算点p、q之间的距离,并且返回结果。假设两点之间的距离 distance二sqrt(p.x-q.x)* (p.x-q.x)+(p.y-q.y)*(p.y-q.
29、y)。请在注释“*3* 之后添加适当的语句。源程序文件MyMain4.cpp中的程序清单如下:/MyMain4. cpp#include#include using namespace std; class Point (public:/* /定义类Point的构造函数/ /* * 2 * *void pint() cout nx=n x end 1;cout y =y end 1;)private:float x,y;);class Distance (public:float Dis(Point &p, Point &q););float Distance : Dis(Point &p,
30、Point &q) (* * 3 * *)int main ()(Point p(10,10),q(20,20);Distance d;cout d.Dis(p,q) *, *, +, , =0注意:逗号的优先级最低。4 .A5 .A解析:本题考查枚举类型的定义和使用。枚举类型定义了一些整型 符号常量的集合,使用枚举类型时应该注意以下几点:枚举类型的第一 个常量默认值是。:枚举类型常量的值允许彼此相同:虽然枚举类型常 量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允 许与整数进行运算,只可以与整数进行比较。根据以上知识我们可以得 出B)、C)、D)选项都不正确。6 .A解析:在M
31、yclass类中定义了两个同名函数show,其中一个是常成 员函数。在main函数中定义了两个对象myl、my2,其中对象my2是 常对象。这两个对象调用成员函数show时,通过对象myl调用的是没 有用const修饰的一般成员函数,而通过对象my2调用的是const修饰 的常成员函数。7 .C解析:根据混合运算规则,如果有一个数据是double型,则其他数 据类型先转化为double型,运算的结果最终也是double型。为保证精 度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。 8.D9 .A解析:单元测试(模块测试),针对每个模块进行的测试,可从程序的 内部结构出发设计测试
32、用例,多个模块可以平行地对立地测试,通常在 编码阶段进行。10 .D11 .C解析:类A,类B,中都有showa()函数,类C继承后再次重写 showa()函数就解决了继承的二义性,这时c.showa()函数显示的就是类C中的showa()的值。12 .C函数参数的3种传递方式:将变量名作为形参和实参,即传值方 式;传递变量指针;引用形参。本题中实参x为传值方式,所以 X的值不会改变;丫为引用形参,所以会改变。故本题答案为C。13 .CCo【解析】把x和y化为二进制,X=14表示为1110, y=15表示为 1111,所以 xl|y=l, A 的 ASCH 是 65, a 的 ASCH 是 9
33、7,所以 A a=l,因此 W=l。1 4.B解析:本题考核指针、数组和关键字new。说明一维数组的一般形 式为: ;在此数组长度必须常 量表达式,它是一个整常数。B)选项中n是一个int型变量不是常数, 所以是错误的。选项A、C使用new获得动态内存空间,它的操作数可 以带有初始值表达式或元素个数,A选项的形式表示数组元素的个数, C选项的形式表示为变量*p赋初值no15.B 16.AAo【解析】枚举类型定义了一些整型符号常量的集合,使用枚举类型 时应该注意以下几点:枚举类型的第一个常量默认值是0;枚举类型常 量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使 用整数直接赋值给枚举
34、类型变量,也不允许与整数进行运算,只可以 与整数进行比较。17 .A解析:注意本题有个陷阱,马虎的考生将纷纷落马。本来、while中 的表达式应为k=l,而本题却为k=l,是赋值表达式而不是逻辑表达 式。因此,编译器将其值一直认为是1,因此表达式一直为真,陷入无 限次的循环。18 .A数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体 数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总 和。外模式是模式的一一部分。内模式,或存储模式,或物理模式, 是指数据在数据库
35、系统内的存储介质上的表示,即对数据的物理结构 和存取方式的描述。19.B20.D【答案】:D【知识点】:栈和队列【解析】:栈和队列都是线性结构,所以选项C错误;栈是一种先进 后出的线性表,故选项A错误;队列是一种先进先出的线性表,故选 项B错误,所以选D。21.DD。【解析】本题考查运算符的优先级书写及运算。*、/运算优先 级相同,据此判断,选项D表示的是2abd / c,而不是2ab / (cd)022.B 解析:耦合性和内聚性足模块独立性的两个定性标准。内聚性是一个 模块内部各个元素间彼此结合的紧密程度的度量,作为软件结构设计 的设计原则,要求每个模块的内部都具有很强的内聚性;耦合性是指
36、模块间相互连接的紧密程度的度量,一个模块与其他模块的耦合性越 强则该模块的独立性越弱。一般优秀的软件设计应尽量做到高内聚、 低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提 高模块的独立性。23 .C解析:C+中,类是用户自定义的一种数据类型,对象是类的实例, 类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型, 它可以定义多个对象24 .概念设计。概念设计。解析:本题考查数据库设计的流程,数据库 设计按流程分为以下阶段:需求分析阶段一概念设计阶段一逻辑设计阶 段一物理设计阶段一数据库实施阶段一数据库运行、维护阶段。25 .连接错误连接错误26.6060解析:本题考察继承
37、中子类对父类的继承方式,注意子类的add 成员函数,它直接使用了父类的成员函数进行运算。27 .共享性共享性解析 数据库系统中的数据能被不同的应用程序使用, 实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要 目的。28.810029 .将文本文件source.txt中内容复制到文本文件dest.txt中将文本文件 source.txt中内容复制到文本文件dest.txt中解析:程序首先将两个文件 source和dest都打开,然后通过while循环,以一行为单位进行内容的 复制。30 .Constructor for object6 Constructor for obiect5
38、 Constructor for container Destructor for container Destructor for object5 Destructor for obiect6Constructor for object6rnConstructor for obiect5rnConstructor for containerrnDestructor for containerrnDestructor for object5rnDestructor for obiect6解析:C+语言中的构造函数和析构函数分别是在声明对象时和对象调用完毕后调用,本题中的调用就是这样成对出现的。
39、31 .把整型指针赋给通用指针把整型指针赋给通用指针32后顶而下自顶而下33.#include34 .覆盖覆盖解析:当派生类中有和基类相同名字的成员时,派生类的 同名成员会覆盖基类的成员,如果派生类对象想访问基类的同名成员, 需使用类名:加以区分。35 .相关文档相关文档36 .(1)应改为catch(char*s)”。(2)应改为“cateh(inti)”。(3)应改为catch()”。【解析】本题中第1个标识前的异常抛出语句为“throw,error);,其 中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类 型,而程序中给出的语句“catch(chars)”是字符型的,所
40、以第1处的语 句修改为“catch(char*S)”。第2个标识前的异常抛出语句为 uthrow(int)0); ,其中的类型为int。对应的异常捕捉语句catch中应 该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配 的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处 的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类 型,那么就用删节号“”表示它可以捕捉任何类型的异常信息,即修 改为“catch()”。37.(l)“voidmain”。(2)“intm=0144;(3)“intn=OX25;”或intn=0x25;【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十 进制到八进制,十进制到十六进制。主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。 cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发 现变量的初值不正确,十进制的100对应八进制的144,卡进制的37 对应十六进制的25,因止匕2