2023年河南省开封市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx

上传人:太** 文档编号:95035181 上传时间:2023-08-14 格式:DOCX 页数:41 大小:54.79KB
返回 下载 相关 举报
2023年河南省开封市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第1页
第1页 / 共41页
2023年河南省开封市全国计算机等级考试C++语言程序设计模拟考试(含答案).docx_第2页
第2页 / 共41页
点击查看更多>>
资源描述

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

1、2023年河南省开封市全国计算机等级考试 C+语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .有以下程序: #include using namespace std; class R public: R(int rl,int r2) Rl=rl; R2=r2; void print(); void printOconst;private: int R1,R2; ; void R:print() cout RI M,n R2 endl; void R:print() const cout RI R2 endl; int main() Ra(5,4); cons

2、t R b(20,52); b.print(); return 0; )执行后的输出结果是()A.5, 4B.20, 52C,0, 0D.4, 52 .()是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。A.模板B.类C.对象D.函数3 .下列关于getline()函数的描述中,不正确的是()。A.getline。函数是用来从键盘上读取字符串的B.getline。函数读取字符串长度是受限制的C.getline。函数读取字符串时,遇到终止符时就停止D.getline()函数中所使用的终止符只能是换行符4 .有以下程序 #include float fun(int x,

3、 inty) return(x+y) ;void main() int a=2, b=5, c=8 ; cout fun(int)fun(a+c, b), a-c) ; 29 .在面向对象的程序设计中,用来请求对象执行某一处理或回答某些 信息的要求称为【】。30 .对于下面定义的类My Class,请在函数f()中添加对象成员把n的值 修改为50。class My Class(public :My Class (int x)n=x ; void SetNum (int nl)n=nl ; private :int n ;);int f()(My Class*ptr=new My Class(4

4、5);131 .浮点数的默认精度值是o32 .汇编程序的功能是将汇编语言所编写的源程序翻译成由【】组成的 目标程序。33 .如果表达式-x中的是重载的类运算符,采用运算符函数调用格 式,及表达式还可以表示为 O34 . 一个项目具有一个项目主管,一个项目主管可管理多个项目。则实 体集“项目主管”与实体集“项目”的联系属于【】的联系。35 .在深度为5的完全二叉树中,度为2的结点数最多为【】。四、程序改错题(10题)36 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序 运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0, Destruc

5、tor 注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream. h)classTC (inti;public:TC;TC;);/ * 不 * * * *prrcr* 不* * * 不TC: TC (cout,Constructor,;i=0;)/不不不不不不error不不不不不不TC: display(toutni=,in, endl;/ 4,一,4,*-*&* *1*/年小小4小prrcr不不小不不不TC: TC(COUInDestructorMendl : ) voidmain (TCa;a. display; )37.使用VC+ +

6、 6 .。打开考生文件夹下的源程序文件1 . cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1 .txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在I I * * * * * *error* * * * * *的下面。试题程序:#include#include usingstd ;voidWriteFile(char*s) ofstreamout 1 ;outl . open(Ml . txt, binarylapp);for(inti=0 ; si!=0 ; i + +) outl . p

7、uts(si);outl . close ;1voidClearFile(ofstreamout 1 ;outl . open(Ml .txt”);outl . close ;intmain chars1024;ClearFile ;coutpleaseinputastrin9 : endl ;cin . getline(s, 1024);WriteFile(s);returnO ; )38 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=lnumber=10number=100注意:不要改动main函

8、数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *enw*的下面。试题程序:#includeclassTC (public:TC(inti)(number=i;voidSetNumber(intm)number=m;intGetNumberconst returnnumber;voidPrintconst coutnumber=Mnumberendl;private:intnumber;);voidmain/不不不不不不不不error不不不不干不予不TCobjl;objl. Print;TCobj2(3);/小小小小小小小小prmr不不不不不不不小objl. number=10

9、;/ j *error*%()*TC. SetNumber(l 00);objl. Print;obj2. Print;39 .使用VC + +6.0打开考生文件夹下的源程序文件1 .cpp,该程序运 行时有错误,请改正程序中的错误,使得程序输出:9, 8, 7, 6, 5注意:错误的语句在/ *error* /的下面,修改该语句即 可。其他的语句不能修改。试题程序:#include(iostream . hclassTC ( /TC(inti) (m_i=i ;voidprint(coutm_i,;)public :intm_i ;intmaint*5*i/不不不不不不不不prrcr、不不不

10、不不不不/inti ;TC04(10);while(i5)I *en*Or* /i+ + :04 . print ; )coutendl ;returnO ; )40 .使用VC+ + 6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运 行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果 为:sizeof(Sl)=5sizeof(s2)=10 sizeof(s3)=l注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *error*的下面。不能删除assert ()语句。只能修改后面的数字。提示:assert函数如果为假,则会产生一个中

11、断异常。试题程序:#include#includevoidmain () chartsl=,abc,:*-1,! *t -X* *!*不不不不不不不不error不不不不不不不不assert(sizeof(s 1 )=3): coutsizeof(s 1 )=5endl ;chars210=,abn:assert(sizeof(s2)=2);coutnsizeof(s2)= 10endl ;chars3=23 :/! 的 的的的触* *?/不不不不不不不不error不不不不不不下不assert(sizeof(s3)=4);coutnsizeof(s3)= 1 endl ;return ;41 .

12、使用VC + +6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *eiror*的下面,修改该语句即可。试题程序:#include(iostream . h) classTC inti ;public :TC ;voiddisplay ;TC ;/*3* *3*/不不汴不不不prmr不卒不不不举TC :TC cout,Constructor,H, ” i=0;)/不小不不不小error不不不不予不TC :display tout,i=,in, Mend

13、l ;)/1的?*5* * ! / *不error不不不不不不TC :TCCOUIHDestructorendl :) voidmain(TCa ;a . display ;程序运行后的输出结果是()。A.编译出错B.9 C.21 D.95.sizeof(float)是()。A.一个双精度型表达式B.一个整型表达式C.一种函数调用D.一个不 合法的表达式6 .有以下类定义:class MyClass private: int id; char gender; char *phone; public: MyClass():id(0),gender(,#),phone(NULL) MyClass(

14、int no,char ge=#,char *ph=NULL) id=no;gender=ge;phone=ph; ;下歹U类对象定义语句中错误的是0A.MyClass myObj;C.MyClass my0bj(12,m,);D.MyClass myObj(12);7 .己知在函数func中语句this-ff=O;与语句ff=O;的效果完全相同。对于这一现象,下列表述中错误的是A.ff是某个类的数据成员,func是该类的友元函数8 .ff是某个类的数据成员,func是该类的成员函数C.this- ff和ff是同一个变量D.func不是一个静态成员函数8.某二叉树T有n个节点,设按某种顺序对T

15、中的每个节点进行编号,编号值为1, 2t . n,且有如下性质:T中任一节点v,其编号等于左42 .使用VC+6. 0打开考生文件夹下的源程序文件1.叩p,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *crror*的下面,修改该语句即可。试题程序:#include/不小不不不小prrcr不不不不不不voidmain/*3* kJ* *2*/不不不不不不error不不不予不不intm=0142:/ *1* 1* *14 .i- , , , , , , /*不error小亭不予干不intn=0X27:intq=32;coutmendl;cout

16、nendl; cout q endl;return;43 .使用VC + + 6 . 0打开考生文件夹下的源程序文件1 . cppo本程序要 求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输 入多行,当输入字符?时,默认字符输入结束,最后把结果输出到屏幕 中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *error*的下面。试题程序:#include vo id ma in inti=O ;charstr120;coutEnterastringendwith? . endl ;/vl*2*/不不不不不不不不error不不不不不不不ci

17、n . getline(str, 120);/ / /不不不不不不举举prrcr* 汴while(str)/-L 的/小小小小小小小小error不不不不不不不小if(stri)=a)stri=stri-a + A ;i+ + ;coutstrendl ;return ;44 .使用VC+6. 0打开考生文件夹下的源程序文件1.叩p。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可 能输入多行,当输入字符?时,默认字符输入结束,最后把结果输出 到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *en*or*的下面。试题程序:#i

18、nclude voidmain inti=O;charstr120;coutEnterastringendwith?. endl;/2*/不不不不不不不不prr()r不不不不不予不不cin. getline(str, 120);/x*/ *i*r*i*i*i*r*r*r91*1*01* 、不,不while(str)/ 1*1 -X- -i-!/不不不不不不不不prmr不不不不不不干不if(strij)=a)stri=stri-a+A;i+ + ;coutstrendl;return ;45 .使用VC + +6.0打开考生文件夹下的源程序文件1 .cpp,该程序运行有问题,请改正main函数中

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

20、不小TCobjl ;objl . Print ;TCobj2(3);7I/ *i*r*r*t*t*r*r*i*1*1*01* 不* 、* *不objl . number=10 ;I I *error*%()*TC . SetNumber(lOO);objl . Print ;obj2 . Print ; )五、综合应用题(2题)46 .请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了 ValArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测

21、试数据,此 种情况下程序的输出应该是:ValArray vl= 1, 2, 3, 4, 5 ValArray v2= 1, 2, 3, 4, 5)要求:补充编制的内容写在“ *333*“与不得修改程序的其他部分。“* *666* * * * *之间,注意:程序最后将结果输出到文件out. dat中。输出函数write To File已经编译为boj文件,并且在本程序中调用。Wal Array, h#include using namespace std;class ValArray int *v: int size; public:Vai Array (const int * P, int n

22、): size(n) v=new intsize;for(int i=0; isize; i+) vi=Pi;47 .请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程 proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList 的重载运算符函数Operator+,其功能是求当前数据表与另一个相同长 度的数据表之和;即它返同一个数据表,其每个元素等于相应两个数 据表对应元素之和。请编写这个。perator+函数。程序的正确输出应该 是:两个数据表:1, 2, 3, 4, 5, 63, 4, 5, 6, 7, 8两个数据表之4, 6, 8, 10, 12,

23、14 要求: 补充编制的内容写在“/*333*与不得修改程序“*666* 之间, 的其他部分。注意:程序最后将结果输出到文件。ut. dat中。输出函数writeToFile 已经编译为。bj文件,并且在本程序中调用。/DataList. h #inClude using namespaCe std;ClaSS DataList数据表类 intfen;double*d; public:DataList(int len, double data=NULL); DataList(DataList&data);int lengthConstreturn len ; double getElement

24、(int i)Constt return dfil; DataList operator+(Const DataList& list)Const;两个数据表求和 voidshowConst;/显示数据表);void writeToFile(Char$, Const DataList&); /main. CpptfinCludeDataList. h”DataList: DataList(int len, double data): len(ien) d=newfor(int i=0; ilen; i+)d(Wi=(data=NULL?O. 0: datai); )DataList: DataL

25、ist(DataList&data) : len(data. len) d=newdoubleflen;for(int i=0; ilen; i+) di=data. di;DataList DataList: 0perator+(Con8t DataList&list, )Const两个数据表求和 double*dd=new doubleflist. lensth;*333* /*666* return DataList(list. length, dd); void DataList: showConst显示数据表 fr(into i=0; ilen-l; i+) eoutdi, 9,;C

26、outdll en-lendl ;int maindouble sl= 1, 2, 3, 4, 5, 6;double s2l=3, 4, 5, 6, 7, 8;DataList list 1(6, si), list2(6, s2);/定义两个数据表对象 eoutvv”两个数据表: wendl:listl. show: list2. show; eoutvendlvv”两个数据表之和:vVendl:(listl+list2). show;writeToFile(, listl+list2); return 0:六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程testl3_3o

27、此工程包含一个 testl3_.cpp,其中定义了类Vector,但类的定义并不完整。请按要求完成 下列操作,将程序补充完整。(1)完成构造函数的定义,把数据成员size初始化为参数s的值,数据成 员buffer指向动态申请的int型size大小的空间。请在注释“*1*”之 后添加适当的语句。完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释 “*2*之后添加适当的语句。完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值, 注意如果ndx超界,请输出“error in index”。请在注释“*3*”之后添加 适当的语句。(4)完成析构函数的定义,要求先将字符d打印在

28、屏幕上,再释放buffer 指向的空间。请在注释“*4*“之后添加适当的语句。输出结果如下:Odd注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。源程序文件testl3_3清单如下:#include #include class Vectorpublic :Vector(int s=100);Vector(Vector &v);int &elem(int ndx);void displayO ;void set();Vector();protected :int size ;int *buffer ;);Vector : Vector(int s) * *Vector : Vect

29、or(Vector &v)(H * 2 *for(int i=0 ; i size ; i+)*(buffer+i)=*(v.buffer+i);)int & Vector : elem(int ndx) 子树上的最小编号减1,而V的右子树的节点中,其最小编号等于V左 子树上的节点的最大编号加lo此二叉树是按()顺序编号的。A.前序遍历B.中序遍历C.后序遍历D.按层次遍历9.下面程序的输出结果是()。#include using namespace std ; intmain() intn=10 ; while(n 7) n ; cout 11 , ; cout endl ; A.l 0,9

30、,8, B.9,8,7,C.l 0,9,8,7, D.9,8,7,6,10 .下面重载乘法运算符的函数原型声明中错误的是()A.TestClass operator *(MyClass,double);B.TestClass operator *(double,MyClass);C.TestClass operator *(double,double);D.TestClass operator *(MyClass,MyClass);二、单选题(13题)11 .已知类X成功地重载了一、+、=、这几个运算符。则其中肯定属 于成员函数的运算符是:A.前置-和口 B产和口 A口和后置-D.+和二12

31、.有如下程序:#ncludeusing namespace std; int main void function(double val);cout Merror in index endl ;exit(l);)return bufferndx;)void Vector : displayO(for(int j=0 ; j size ; j+)cout elem(i) endl ; )void Vector : set()(for(int j=0 ; i size ; j+)elem(j)=j+l ;)Vector :Vector()( * 4 *)void main()(Vector a(1

32、0);Vector b(a);a. set();b. set();a. displayO ;b. displayO ;49.使用VC6打开考生文件夹下的工程testl7_3,此工程包含一个源程 序文件test17_3.cpp,其中定义了用于表示点的类Point和表示内容的类 Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按 要求完成下列操作,将它们的定义补充完整。定义类Point的构造函数,请使用参数列表的形式将成员函数x和y 分别初始化为参数xl和yl的值。请在注释“*1*。”之后添加适当的 语句。(2)完成类Text的构造函数Text(char *str)的

33、定义,将char型的str指向 的内容赋值给text并且输出str所指向的内容,请在注释“*2*之后 添加适当的语句。定义类 CircleWithText 的构造函数 CircleWithText(int cx,int cy,char *msg), int型的ex和cy用于赋值给x和y, char型的指针*msg用于赋 值给text,请在注释“*3*”之后添加适当的语句。输出结果如下:Point : 3 4hello注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件testl7_3.cpp清单如下:#include #include class Point int x,y;

34、public:* j * (cout Point: x,fyff=O;与语句ff=O ;的效果就不同了。 静态成员函数没有this指针。因为类只有一个静态成员函数实例,所以 使用this指针没有什么意义。在静态成员函数中使用this指针会引起编 译错误。8 .A解析:根据节点v的右子树的节点中,其最小编号等于v左子树上 的节点的最大编号加1,可以断定是前序遍历。9.B10.C1LB解析:赋值运算符=和运算符口只能作为成员函数重载,而+则 没有限止。12 .D本题考查函数调用及传值方式传递参数,执行函数function时,并没 有将3的值传回来,而val又没有初始化,所以会输出一个不确定的 值,

35、D选项正确。13 .D14 .Aiomanip中定义的操纵符包括:setfiH(ch)用ch填充空白、 setprecision(n)将浮点精度置为n setw(w)、读写w个字符的值 showpoint没置小数点。15.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插 入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈 顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元 素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按 照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的 原则是“先进先出”或“后进后出二注意:数据结构中,栈和队

36、列组织数 据的原则。16 .D解析:本题考核类的析构函数。在C+中,析构函数名为符号“” 加类名,析构函数没有参数和返回值。根据以上知识可知,MyClass类 的正确析构函数的说明为MyClass()017 .C本题主要考查了成员对象。类TWO的数据成员是类ONE的对象onel 和one2, main。函数中首先创建类TWO的对象t并提供初始值4,先 执行成员对象onel的构造函数体,输出1;再执行成员对象one2的构 造函数体,输出2,最后执行类TWO的构造函数体,输出3。因此本 题程序运行时的输出结果是123。18 .C19 .A本题考查重载流运算符“”,根据重载规则,本题答案为A。20

37、.A解析:函数定义时如果数据类型默认,则默认为int0函数中如果 有“retum(表达式)-语句,表达式的类型可能与函数的类型不一致,但 它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作 为返回值,因此本题的函数值类型是int。21 .DDo【解析】函数执行过程为:functionl(5), function2(3), functionl(2), function2(0)return。22.B解析:题目中的两个函数参数个数不同,因此可以在同一程序中定 义为重载函数。所以,选项B)叙述正确。23 .C解析:在关系模型的数据语言中,一般除了运用常规的集合运算(并、 交、差、笛卡尔积等

38、)外,还定义了一些专门的关系运算,如投影、选择、 连接等运算。前者是将关系(即二维表)看成是元组的集合,这些运算主 要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来 进行运算。因此,选项A与B中的说法都是错误的,而选项C中的说 法是正确的。24 .friend void A() ;friend void A();解析:C+中类的友元函数在声明 时应在该函数前面加上关键字friend,同样如果要声明一个类为另一个 类的友元类也要在前面类名前加上friendo25 .数据库管理系统数据库管理系统(DBMS)26 .friend complex& operator-(complex&)

39、friend complex& operator (complex&)解析:本题考核运算符重载的定义。程序要填入的是运算符 函数operator-在类complex中的声明,运算符“二是作为友元函数重 载的。根据题目给出的条件,易得到答案。27 .交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入 排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选 择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作 用机制和区别。28 .结构化分析方法结构化分析方法解析:本题是基础题,考核需求分 析方法。常见的需求分析方法有结构化分析方法和面向对象的分析方法。29 .消息消息解析:消息是一个实例与另一个实例之间传递的信息,它 请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制 流。30 .Ptr- SetNum(50) ; Ptr- SetNum(50);解析:本题考查的是考生使 用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“31.6位6位32 .机器语言机器语言33 .x.operator()34 .一对多一对多解析:实体集“项目主管”与实体集“项目”的联系属于 一对多的联系。35.1536 .(1)应改为“TC: TC”。应改为“voidTC:display”。(3)应改为“TC:TC

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

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

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

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