还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2023年河北省邯郸市全国计算机等级考试C++语言程序设计模拟考试含答案学校:班级:姓名:考号:
一、.选择题题110如果关系模式为且每个非主属性都完全函数依赖于的候选码,
1.R1NF,R则称属于RoA.2NF B.3NF C.BCNF D.4NF以下程序的输出结果是
2.#includeiostream.hvoid main{int a=0,i;fori=l;i5;i++{switchi{case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}coutaendl;return;}.假定为一个类,则该类的拷贝构造函数的声明语句为3MyClass;A.MyClassMyClass xB.MyClassMyClass x;C.MyClassMyClass xD.MyClassMyClass*x.以下关于私有和保护成员的叙述中,不正确的是4私有成员不能被外界引用,保护成员可以A.私有成员不能被派生类引用,保护成员在公有继承下可以B.私有成员不能被派生类引用,保护成员在保护继承下可以C.私有成员不能被派生类引用,保护成员在私有继承下可以D.//********error********catch|cout«/zERRORz/«endl;;returnO.使用打开考生文件夹下的源程序文件该程序运行时有错请改正程序中38VC++
6.0L cpp,的错误,使程序输出的结果为1003732注意错误的语句在/的下面,修改该语句即可试题程序/******error******#includeiostream.h//******error******voidmain//******errcr******intm=0142//******eircr******intn=0X27;intq=32;;;;coutmendl coutnendlcoutqendl return.使用打开考生文件夹下的源程序文件该程序运行时有错,请改正其中39VC++
6.
01.cpp,的错误,使程序正常运行,并使程序输出的结果为二sizeofSl5sizeofs2=10sizeofs3=l注意不要改动函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/main/的下面°******errcr******不能删除语句1assert⑵只能修改后面的数字提示函数如果为假,则会产生一个中断异常assert试题程序#includeiostream.h#includeassert.hvoidmainchar*sl=abcI I********error********assertsizeofsl==3:;coutsizeofsl=5endl chars2
[10]=ab//********error********;assertsizeofs2==2cout,,sizeofs2=10endl;chars3=23//********error********;assertsizeofs3==4;coutsizeofs3=lencll;return使用打开考生文件夹下的源程序文件
40.VC++
6.0,该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一
1.CPP个字符串,并将结果保存到文件中
1.txt注意不要改动函数,不能增加或删除行,也不能更改程序的结构,错误的语句在main的下面//******error******试题程序#includeiostream#includefstream//********error********;usingstdvoidWriteFilecharts{;ofstreamoutl//********error********outl.open/zl.txt〃,binary|app;;;for inti=0s[i]!=0i++{//********error********;outl.putss[i];outl.close voidClearFile;ofstreamoutloutl.open/zl.txt〃;;outl.closeintmain;chars
[1024];ClearFilecoutz/pleaseinputastrin9〃〈endl;;cin.getlines,1024;WriteFiles;returnO.使用打开考生文件夹下的源程序文件该程序运行时有错,请改正其中41VC++
6.
01.cpp,的错误,使程序正常运行,输出的结果为注意错误的语句在/Constructor,i=0,Destructor的下面,修改该语句即可试题程序;/******error******#includeiostream.h classTC{intipublicTC;voiddisplay;〜TC;;;;I/******errcr******TC TCcoutConstructor,i=0I I******errcr******TCdisplaytouti=,,i endl;,TC TCCOUIDestructorendl:}voidmain;TCa;a•display.使用打开考生文件夹下的源程序文件该程序运行时有错误,请改正错误,42VC++
6.
01.cpp,使程序正常运行,并且要求最后一个必须抛出执行的任何异常catch程序异常,输出信息为error0ERROR注意不要改动函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/main/的下面******error******试题程序#includeiostream,h intmain{try{;throwerror}//********error********catchchars;coutsendltry;throwint0}//********eiror********catch;coutiendl try;throw0;throwerror//********error********catchcout«/zERROR/z«endl;;returnO.使用打开考生文件夹下的源程序文件本程序要求输入一个字符串,然43VC++
6.
01.cpp后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动函main数,不能增加或删除行,也不能更改程序的结构,错误的语句在//的下******errcr******面°试题程序#includeiostream.h;voidmaininti=O;charstr
[120]coutEnterastringend;with.endl//********error********cin.;getlinestr,120I/********error********whilestr;;//********error********ifstr[i]=a str[i]=str[i]-a+A i++;;coutstrendl return.使用打开考生文件夹下的源程序文件该程序运行有问题,请改正44VC++
6.
01.cpp,main函数中的错误,使程序的输出结果为number=l number=10number=100注意不要改动函数,不能增加或删除行也不能更改程序的结构,错误的语句在/main/的下面******eircr******试题程序#includeiostream.h classTCpublicTCinti{二;}number ivoidSetNumberintm;number=m intGetNumberconst;{returnnumbervoidPrintconst coutz/number=/znuiiiberendl;;private intnumber};voidmain{//********error********;TCobjl;objl.Print;TCobj23;//********error********objl.number=10//********eiror*%******;TC.SetNumber100;objl.Print;obj
2.Print.使用打开考生文件夹下的源程序文件该程序运行时有错误,请改正45VC++
6.
01.cpp,程序中的错误,使得程序输出9,8,7,6,5注意错误的语句在/的下面,修改该语句即可其他的语句不能修改********error********/试题程序#includeiostream.h classTC/********error********/TCinti;m_i=i}voidprint;cout--m_i,}public;intmj;intmainI********error********/;inti;TC0410whilei5{/********errOr********/i++:;
04.print;coutendl;returnO}
五、综合应用题题
246.⑴应添加MBAintm{a=m;}”⑵应添加HPAIintm,intnBAn{b=m;}”3应添力II uPA2intm,intn,intkPAIn,k{C=m;o应添力口;4coutgetagetbCendlo【解析】根据第处要求,构造函数的函数名和类名一致,显然构造函数的名称为在1BA BA.中通过参数完成对成员变量的赋值,因此构造函数的名称为在函数内部对成BA ma BAintm,员赋值,故第处的语句应添加;”根据第处的要求,构造函数的形a1“BAintm{a=m2式为赋值给类成员将作为基类构造函数的参数值传入,故第TAIintm,intn,m PA1b,n BA处应添加;}”根据第处的要求,函数形式为2“PAlintm,intn BAn{b=m3PA2intm,intn,在构造函数中将赋值给数据成员将和分别赋值给基类构造函数的参数和intk,m c,n kPA1mn,因此第3处应添加uPA2intm,intn,intkPAln,k{C=m根据第4处的要求,PA2类公有派生于而公有派生于因此在类中可以调用基类的和来获得基类PA1,PA1BA,PA2geta getb私有成员和再输出的私有成员即满足要求,因此第处应添加a b,PA2C4;“coutgetagetbCendl.使用打开考生文件夹下的源程序文件类包括姓名和年龄两个字47VC++
6.
03.cpp Peopleo段函数获得年龄比较大的人的姓名,然后输出这个姓名到屏幕fun其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整⑴完成类的构造函数功能,请在注释后添加适当的语句1⑵完成构造函数对姓名的赋值,请在注释后添加适当的语句2⑶定义类的友元函数请在注释后添加适当的语句fun,3⑷补充函数的年龄比较功能,请在注释后添加适当的语句fun4注意增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码试题程序#includeiostream.h classPeoplepublic//|/I;inti;;;for i=0sUserName[i]!=0i++{m UserName[i]=sUserName[i]//*JL**1**xt*KL**JL*XL*/不不不不不不不下乙不不不不不不不不;m01d=n01d private;charm_UserName
[32];intm Old/不不不不不不不不J不不不不不不不不};,voidfun charts,Peoplepersonl Peopleperson2I/********4********;;if for inti=0personl.m_UserName[i]!=0i++—|;s[i]=personl.m_UserName[i];s[i+l]=0else{;;for inti=0person
2.m_UserName[i]!=0i++;{s[i]=person
2.m_UserName[i];s[i+l]=0voidmain;chars
[32]〃〃,;Peoplepl abc20〃〃,Peoplep2def30;funS,pl,p2;coutsendl return
六、,综合应用题(题)
32.使用打开考生文48VC6件夹下的工程此test27_3工程包含一个test27_
3.cpp,其中定义了类但ARRAY,类的定义并不完整请按要求完成下列操作,将程序补充完整⑴完成类的带一个ARRAY参数的构造函数,参数为i型,如果不是正数则输int i出错误信息并退出,否则申请型的大小为的空间,int i然后把赋值给类的数据成i员请在注释〃num“**1**”之后添加适当的语句⑵完成类的拷贝初ARRAY始化构造函数,注意解决重复删除的问题,请在注释之后添加适当的语7/**2*句⑶完成类的重载的ARRAY运算符函数口,参数为i int型,如果超界则输出错误信i息并退出,否则把下标为i的元素返回,请在注释〃“**3丑”之后添加适当的语句⑷完成类的重载的ARRAY运算符函数二,同样需要注意解决重复删除的问题,不能只是简单的赋值,请在注释〃之后添加适当“**4**”的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件清test27_
3.cpp单如下;#includeiostream.h#includestdlib.h class ARRAYprivate:int*p,num;public:ARRAY{p=new int
[10],num=10;}ARRAY int i//**]_**“错误!数组长度应为正;cout\n”exit0;p=new int[i];num=i;}ARRAYconst ARRAYa;int operator[]int i;〜ARRAY{delete p;}二ARRAYoperator const ARRAY a;friend ARRAYoperator+ARRAY a,ARRAYb;friend ostreamoperatorostreamos,ARRAYa;;}ARRAY::ARRAYconst ARRAY a//**2**for inti=0;inum;i++PD]=a.p[i];}int ARRAY:operator[]inti〃**3**“越界访问!”;coutexit0;return p[i];ARRAYARRAY::operator=constARRAYanum=a.num;p=new int[num];forinti=0;inum;i++若变量都已正确说明,则以下程序段的输出结果是
5.printfa a=2;b=3;b***a=%d###b=%d,a,b;没有正确的输出格式控制A.输出为***B.a=2输出为###二C.b2输出为***D.a=2###b=2下列关于语言类的描述中错误的是
6.C++.类用于描述事物的属性和对事物的操作A类与类之间通过封装而具有明确的独立性B..类与类之间必须是平等的关系,而不能组成层次结构C类与类之间可以通过一些方法进行通信和联络D.算法的空间复杂度是指
7.算法程序的长度.算法程序中的指令条数算法程序所占的存储A.B C空间.执行过程中所需要的存储空间D
8.下面程序的运行结果为#includeiostream o;using namespace stdvoid swapint a,intb{int temp;temp=a a-bb=temp P[i]=a-P[i]//**4**voidARRAY operator+ARRAYa,ARRAYbif a.num!=b.hum“数组长度不相同!”coutendl;exit0;ARRAY ta.num;forint i=0;ia.num;i++t.p[i]=a.p[i]+b.p[i];return t;ost reamoperator ostreamos,ARRAYaint i=0;for;ia.num;i++couta,p[i]if!i+l%10cout endl;return os;void mainARRAYa3;a
[0]=a[l]=a
[2]=3;coutaaendl;ARRAY ba;coutbbendl;ARRAY c2;c=a+b+b;coutccendl;二c b=a+b+c;coutaabbccendl;,使用打开考生文件夹下的工程此工程包含一个其中定义了时49VC6test35_3test35_
3.cpp,钟类但该类的定义并不完整请按要求完成下列操作,将程序补充完整clock,⑴定义类的私有数据成员和它们都是型的数据请在注释之后clock hourminute,int7/**1**”添加适当的语句⑵补充完全类的构造函数,私有数据成员和分别初始化为参数和的值,clock hourminute hm请在注释〃之后添加适当的语句“**2**”⑶完成类clock的成员函数printtime,的定义,该函数以uNow the time ishour:minute的格式输出数据成员hour和minute的值,如hour=
3、minute=59,则输出为Now the time is03:59n,请在注释7/**3**M之后添加适当的语句⑷完成类的成员函数的定义,该函数可将类对象表示的时间加clock addoneminutetimeclock一分钟,如现在、运行该函数后请在注释〃之后添hour=3minute=59,hour=4minute=0“**4**x o加适当的语句程序的输出结果如下Now,thetime is12:59Now.thetimeis13:00注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件清单如下test35_
3.cpp#includeiostream.h classclockprivate:〃**]**public:clockint h,int m//**2**}int presenthour{return hour;}int presentminute{return minute;};void addoneminutetimeQvoidprinttime;;void clock::printtimeifhour10coutO;//**3**ifminute10coutO;coutminuteendl;void clock::addoneminutetime//**4**ifminute59minute-=60;hour++;ifhour23hour=0;}void mainclock c12,59;;c.printtimeOc.addoneminutetime;c.print:time;参考合案l.A解析本题考核语句和语句的综合运用语句的执行过程是在后
2.A forswitch switch switch面的表达式的值和后面常量表达式的值吻合时,就执行后面的语句如果在该语句的后case面没有语句,则继续执行下一个直到遇到语句或多分支的结束在break case,break switch语句中,语句的作用是使流程跳出结构,终止语句的执行因为每个switch breakswitchswitch语句后面都没有语句,所以,第次循环()执行后,的值为第次循环case break1i=1a82(匚)执行过后,的值变为第次循环()执行过后,的值变为第次循环2a163i=3a264o执行过后,的值变为然后执行这的循环条件为假,结束循环所以最后的值为a31i++,a31o解析本题考核拷贝构造函数的概念声明拷贝构造函数的格式为〈类名〉::(拷贝构造
3.C函数》(<类名><引用名>);,其中是修饰符可,以省略const const
4.A私有成员和保护成员都不能被外界引用,这与继承方式无关解析本题实际,亡是考场语言中的格式化输入输出知识一般来说,学习的考生5c CC++先前都学习过语言,如果能够深刻理解这两种具有血缘关系的语言中对于输入输出的控制方C式,则能够更好的理解面向对象的本质同时本题也考察了三日表达式的知识如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式解析语言中的类是可以组成层次结构的,类是用于描述事物的属性和对事物的操作,6c C++类与类之间有相对的独立性,但其可以通过一些方法进行信息的通信解析算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度所谓算法的时间复
7.D杂度是指执行算法所需要的计算工作量算法的空间复杂度一般是指执行这个算法所需要的内存空间解析函数形参是引用方式,则在函数体内形参改变,对应的实参也改变
8.B解析对于任何一种赋值运算,其赋值号或复合赋值号左边必须是一个左值左值是指具
9.C有对应的可由用户访问的存储单元,并且能够由用户改变其值的量而在)选项中赋值号对C应的是表达式,不是一个左值,因此是非法的赋值表达式“i+1”
10.B解析在创建一个对象时,会调用类的构造函数语句⑵创建了两个
11.A C++MyClassab,*p;对象、和指针在创建对象和后会调用构造函数,而创建指针时,由于本身不是对a bp,a bp p象,所以不调用类的构造函数
12.D
13.C【解析】在赋值表达式中,赋值符号的左边只能为变量,不能为表达式,右边可以为常量或Co者是表达武,运算符“%”两边必须是整型数据,所以选项错误所以选项正确D C解析根据数据结构对栈的定义及其特点可知栈是限定只在表尾进行插入或删除操作
14.C的线性表,因此栈是先进后出的线性表,对栈的插入与删除操作,不需要改变栈底元素栈是限定只在表尾进行插入或删除操作的线性表
15.C【解析】如果在子类中要访问父类的函数应用运算符Co
16.A本题考查对文件流输入的操作,可以调用文件流的成员函数一般形式如下文件流对pen,象.磁盘文件名,输入/输出方式根据以上格式,可以判断选项错误Open A解析本题的运算过程是
17.B funintfuna+c,b,a-c,funintfun10,5,2-8,fun二int
15.000000,-6,thn15,-
6918.C解析本题考查的知识点是派生类对基类成员的访问派生类对基类中各成员的访问能力与继承方式无关,其成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员
19.A语言中规定在类体中不允许对所定义的数据成员进行初始化C++
20.D【解析】只有公有继承的公有成员才能被派生类的对象直接访问,其他的情况都会因为访问Do权限问题产生错误
21.D
22.C解析构造函数的作用是在对象被创建的时候对对象进行初始化构造函数在对象被创建的时候由系统自动调用故项正确C
23.B【解析】满二叉树指除最后一层外,每一层上所有结点都有两个子结点的二叉树完全二叉Bo树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干叶子结点的二叉树因此选项叙述正确,而选项叙述错误由定义可知,满二叉树肯定是完全二A B叉树,而完全二叉树一般不是满二叉树.数据库管理系统24数据库管理系统DBMS解析分析循环体可以判断出用于统计字符串中字符的数量,用于统
25.4343while ila i2计字符的数量因此,考察数组的内容可得其数量分别为和b a
43.相邻相邻解析常用的存储表示方法有种,顺序存储、链式存储、索引存储、散列存储264其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中.完整性控制完整性控制解析安全性控制防止未经授权的用户有意或无意存取数据库中27的数据,以免数据被泄露、更改或破坏;完整性控制保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制正确处理好多用户、多任务环境下的并发操作,防止错误发生,恢复当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态♦注意数据库的其他用途,如数据定义、数据操作和数据管理等.系统设计系统设计解析数据库的设计过程要经历个阶段可行性分析与研究阶段、系283统设计阶段、设计实施与系统运行阶段系统设计阶段是系统的具体设计过程,主要包括概念设计、逻辑结构设计、物理结构设计个步骤这个不同层次上的设计过程,是把实体以及33相互之间的联系转换为“数据”并落实于计算机中数据库设计中的主要技术工作在这个阶段中完成.程序调试程序调试29一对多一对多解析实体之间的联系可以归结为一对
一、一对多与多对多如果一个学校有30许多学生,而一个教师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系或二二或=二或=二二二」或
11.ID==s,ID S.ID ID this-ID s.lD s.lD this-IDID sD s.lD二二或-口=二或旧二二〉解析本题考核运算符的重载运算符“二二”IDthis
505.1M5-0作为成员函数重载,所以在横线处填入的表达式应该为对象本身与对象的比较表达式,ID sID即ID==s.lDo解析此题考查的是基类和派生类的构造函数派生类构
32.coutBase::acoutBase::a造函数的执行顺序为首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容此题要求结果是输出分析题目,首先调用基类的构造函数,然后是调用子对象的构造函数,12,横线处要求输出基类成员的值,填入即可a coutBase::a.友元函数友元函数解析本题考核友元函数规定,一个类的私有成员和保护成员,只33C++能由其本身的成员来访问,不能被其他函数访问,这样形成了封装的概念,也保护了类本身的数据不致于受到破坏但是,如果想让类中的成员数据可以被其他函数访问,可以通过友元函数声明,来分享类中的资源类的友元函数可以直接访问该类的所有成员,包括私有成员.变换型变换型解析典型的数据流类型有两种变换型和事务型一变换型是指信息沿输入34通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流它可以引发一个或多个处理,这此处理能够完成液作业要求的功能,这种数据流就叫做事务解析本题考核作用域分辨符号的使用作用域分辨符号
35.coutBase::acoutBase::a是“”,它可以用来限定要访问的成员所在的类的名称一般来说,在派生类中对基类成员的访问应该是惟一的但是,多继承情况下可能造成对基类中某个成员的访问出现不惟一的情况,通过使用对象作用域分辨符可以解决这种对基类成员访问的二义性问题题中派生类与基类定义了数据成员所以要访问基类数据成员可以通过作用域分辨符来实Derived Basea,现⑴应改为;
36.usingnamespacestd\n⑵应改为Uoutl.openl.txt,iosbinary|iosapp;Mo\n⑶应改为Uoutl.puts[i];n o\n【解析】本题第1处的Husingstd;是在程序中弓I入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为usingnamespacestd;n第o2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以Uoutl.open1l.txt,;”语句缺少类即第处的语句修改为binary|app ios,2“outl.openl.txt,ios binary|iosapp;”第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为Uoutl.;puts[i]”应改为
37.1catchchar*s”应改为2catehinti”⑶应改为“catch…”【解析】本题中第个标识前的异常抛出语句为〃〃;,其中的类型为字符串1“throw error所以对应的异常捕捉语句中应该符合这个类型,而程序中给出的语句是字catch catchchars符型的,所以第处的语句修改为1第个标识前的异常抛出语句为;,其中的类型为对应“catch char*S”2“throwint0”int的异常捕捉语句中应该符合这个类型,所以补充子句中的类型,否则如果找不到catch catch匹配的块,系统就会调用一个系统函数,使程序终止运行即第处的语句修改为catch2如果在子句中没有指定异常信息的类型,那么就用删节号表示它可以捕捉“catchinti”catch任何类型的异常信息,即修改为“catch…”
38.1“voidmain”;2“intm=0144”3uintn=0X25;”或intn===0x25;”【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十进制到八进制,十进制到十六进制主函数定义的定义形式为函数名之后必须是一对括号,因此第处应改“main”,1为输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的“voidmain cout初值不正确,十进制的对应八进制的卡进制的对应十六进制的因此和应分100144,3725,23别改成^intm=0144;”,^intn=0X25;”或uintn=0X25;”
39.⑴应改为uassertsizeofsl==4;□\n2应改为Massertsizeofs2==lO;no⑶应改为;\n assertsizeofs3==lo【解析】函数如果为假,则会产生一个中断异常所以要让它正常执行输出结果,那么\n assertassert函数只有为真,才不会产生中断异常uassertsizeofsl==3;”语句中“sizeofsl二二3”为假,这会使程序产生异常,不能正常执行因为的值为但是它还有一个尾符,它的strl abc,长度应该是4,而不是3,所以在第1处修改为uassertsizeofsl==4;str2
[10]说明,str2的空间为10,在第2处修改为uassertsizeofs2==10;M charstr3=23;语句说明23是字符,o所占存储空间为1,所以修改为uassertsizeofs3==1;”应改为;
40.1^usingnamespacestd应改为・,,〃;2“outl open l.txt,ios binary I iosapp应改为;3outL puts[i]o【解析】本题第处的;是在程序中引入标准命名空间对于中引入标准1“usingstd”std,C++命名空间的格式,缺少所以第处的语句修改为;第namespace,1“usingnamespacestd2处,调用成员函数中,输入、输出方式是在类中定义的,所以在open ios“outl.open
1.txt,binary;语句缺少类即第处的语句修改为〃〃,I app”ios,2“outl.openl.txt iosbinaryIios;第个标识应该用流成员函数输出字符,所以第处的语句修改为;app”3put3“outl.put s[i]”⑴应改为
41.“TC TC”o应改为\n2voidTC::display\n⑶应改为“TC〜TC”o【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”\n作用域运算符用采表示某个成员属于哪个类,使用格式为“类名<成员函数>参数函数,因此第处应改为,默认构造函数没有参数由第处后1“TC TC”2“TC display”的语句看,这是在类外实现函数,因此也有作用域运算符使用错误问题,函数返回TC display值为void,因此第2处的语句应改为“voidTCdisplay°由第3处的语句UTC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”o应改为
42.1catch char*s”应改为2catehinti”应改为3catch…”【解析】本题中第1个标识前的异常抛出语句为throw error/z;,其中的类型为字符串所以对应的异常捕捉语句中应该符合这个类型,而程序中给出的语句是字符catch catchchars型的,所以第处的语句修改为1第个标识前的异常抛出语句为,其中的类型为对应的“catchchar*S”2“throwint0int异常捕捉语句中应该符合这个类型,所以补充子句中的类型,否则如果找不到匹catch catch配的块,系统就会调用一个系统函数,使程序终止运行即第处的语句修改为catch2“catchinti”如果在子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类catch型的异常信息,即修改为“catch…”⑴应改为;
43.“ein.getlinestr,120,”\n⑵应改为uwhilestr[i],o\n⑶应改为uifstr[i]=a str[i]=2M【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数函数读入一行\n getline字符,格式为字符数组,字符个数,终止标志字符”,所以第处改为“cin.getline1“cin.;”第处的语句应该是判断字符串中的每一个字符是否getlinestr,120,2“whilestr”str为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为第处的快”语句是判断字符是否为小写字符,而现有的语句只“whilestr[i]”3str[i]是判断字符是否大于a,但是小写字符应该是a到2,所以修改为uifstr[i]=a str[i]=zn应改为⑴;”
44.1TCobjl⑵应改为;“ObjL SetNumberlO应改为;3“0bj
2.SelNumberlOO【解析】本题第处的;”语句是声明类的对象根据类构造函数的定义1“TCobjl TCObjl,TC存在整型参数,并且题目要求第一个输出结果两所以补全参数即第处的TCinti,1,1,1;第处处的“TCobjll2;”应该是调用成员函数赋值在中成员函数的使用形式“objl.number=10SetNumber C++应该是对象名.成员函数,所以修改为“objl.SetNumberlO;v类是对象的抽象,而对象是类的具体实例第3处“TC.o;”语句中的为类,并不是对象,这里应该使用定义的对象,即SetNumberlOO TCbj2,所以将语句修改为以;“obj SetNumberlOOo⑴应添加
45.“public:o\n2“inti”应改为uinti10;”⑶;应改为\n“i++”【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保护和私有种,而默\n3认的访问属性为私有,只有公有成员才能通过类的对象被访问故应在构造函数前添加,“public”否则该类无法被实例化变量的初始化可以通过“二”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出个数,的循环变量每次减在时循环,5while i1,5故初始化应为若循环中每次增则循环永远不会退出i10i1,,使用打开考生文件夹下的源程序文件其中定义了类、和46VC++
6.
03.cpp,BA PA1PA2,其中类由类公有派生,类由类公有派生上述个类的定义并不完整,请PA1BA PA2PA13按要求完成下列操作,将程序补充完整程序输出结果如下\n\nlO\n5\nl057珀⑴定义类的构造函数,该构造函数有一个整型的参数在构造函数中将赋值给数据BA m,m成员请在注释之后添加适当的语句a1⑵定义类的构造函数,该构造函数有两个整型的参数和在构造函数中将赋值给\n PA1m n,m数据成员将作为基类构造函数的参数值传人请在注释之后添加适当的语句b,n BA2⑶定义类的构造函数,该构造函数有个整型的参数、和在构造函数中请将赋\n PA23m n k,m值给数据成员将和分别赋值给基类构造函数的参数和请在注释之后添加适c,nkPA1m n3o当的语句⑷完成类的成员函数的定义,该函数调用基类成员函数,输出基类私有成员、\n PA2show ab及类自身的数据成员的值,上述个值在输出时用空格隔开请在注释之后添加适PA2C34当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容\n试题程序\n\n#includeiostream.h\nclassBA\n{;\ninta\npublic\n//********]********;\nintgeta{returna};\n XnclassPAIpublicBA\n{;\nintb\npublic\n//********2********;\nintgetb{returnb};\n\nclassPA2publicPAI\n{;\nintC\npublic\n II********3********\nvoidshow\n{\n II********4********\n;\n}\nvoidmain\n{;\nPA2a7,5,10;\ncouta.getaendl;\ncouta.getbendl;\na.show\n}应添加
47.1“People char*sUserName,intnOld”应添加;2“m_UserName[i]=0”应添力口3friendvoidfun charts,PeoplepersonL People;person2”4将“if”补充完整为uifpersonl.m_01dperson
2.mOld”【解析】本题第处要求“完成类的构造函数”根据1语句知道为类,所以类的构造函数名为“classPeople”People People根据第处的大括弧中的语句知道函数中的参数为数组存放姓名,整型People,1sUserName存放年龄,所以补充构造函数定义为nOld第处要求“完成构造函数对姓名的贼值”第处^Peoplechar*sUserName,intnOtd”22补全姓名赋值,即;第处要求“定义类的友元函数在中,“Hi_UserName[i]=O3fun C++如果在本类以外的其他地方定义了一个函数,在类体中是用对该函数进行声明的,此friend函数称为本类的友元函数,并且能够调用本类中的成员变量程序中的函数定义为funvoidfunchar*S,Peoplepersonl,Peopleperson2n,所以声明fun为类People的友元函数,即这里补全;第处要求“friendvoktfunchar*s,People personl,Peopleperson24“补充函数的年龄比较类中年龄的变量为根据中类变量的调用格fun Peoplem_01d,C++式补充第处语句中的条件判断语句,即4if“ifSer-sonl.m_01dperson
2.m_01dv;;;
48.1ifi=02num=a.num p=new int[num]3di=num||i04return*this l\r\n;;ifi=0\r\n2\r\n num=a.num\r\n p=new int[num]\r\n3\r\n di=num||i0\r\n4\r\n;解析主要考查考生对于一个特殊的类——安全数组的掌握,其中涉及了友元函return*this数、重载函数等,其中⑵中必需申请新的空间,这样可以使得两个对象分别占用不同的两个空间,在自动调用析构函数时不会遇到重复删除的问题,这种方法要掌握;
49.1int hourint;;;;;minute2hour=h minute=m3coutNowthe timeishour:4minute++;;;;l\r\n inthour\r\n intminute\r\n2\r\n hour=h\r\n minute=m\r\n3\r\n coutNow,the;;解析本题主要考查考生对于类基本概念的timeishour\r\n4\r\n minute++掌握和将具体问题转换为模型并编程实现的能力特别是对于程序中小时与分的范围限定是必不可少的;;main{int a=2,b=3swapa,bcoutan,”bENDL;}A.2,3B.3,2C.2,2D.3,3以下非法的赋值表达式是.9;;;;A.n=i=2,++i B.j++C.++i+l D.x=j0有如下程序.#includeiostreamusing namespace std;class Base{private:10;void fun1const{coutfunl}protected:void fun2eonst{coutnfun2n;}public:void tim3const{coutnfun3n;}};class Derived:protectedBase{public:void fun4const{coutfun4;}};int main{Derived
①〃
②③〃
④其obj;obj.funl;//obj.fun2;obj.fun3;//obj.fun4;return0;}中有语法错误的语句是
①②③④①②③②③④①④A.B.C D.
二、单选题题
13.假定为一个类,则执行;语句时,自动调MyClass MyClassa,b2,*p11用该类构造函数次A.2B.3C.4D.
5.有如下程序#include using namespacestd;class Mountain{int height;12public:Mountainint h=0:hcighth{}virtual char*GctNamc const{return山;}int GetHeightconst{return height;}};class Lushan:public Mountain}庐山public:Lushanint d:Mountaind{}char*GetName const{return;}海};int main{Mountain*p=new LushanlOOO;cout1拔“〈二return=””0;==运行这个程序的输出结果是__________庐山海拔米.庐山海拔米山海拔米山海拔米A.1000B C.1000D..设变量已正确定义并赋值,以下正确的表达式是13oA.x=y+5=x+z B.int
15.8%5C.x=y+z+5,++y D.x=25%
5.
0.下列关于栈的描述正确的是.在栈中只能插入元素而不能删除元素在栈中只能删除14A B.元素而不能插入元素栈是特殊的线性表,只能在一端插入或删除元素栈是特殊的线性表,C.D.只能在一端插入元素,而在另一端删除元素.下列程序中横线处应填入的语句是15o classBasepublicvoidfun{coutzzBaseoffun/z endl;}};classDerivedpublicBasevoidfun//显示基类的成员函数fun cout//Derivedoffun,/endl;};;;;;A.funB.Base.funC.Base funD.Base-fun.要建立文件流并打开当前目录下的文件用于输入,下列语句中错误的是166le.dat;A.ifstream fin=ffstream.open file.dat;;B.ifstream*fin=new ifstreamfile.dat C.ifstream fin;;fin.open file.dat D.ifstream*fin=new ifstream;fin-open file.dat有以下程序
17.#includeiostream.hfloatfunint x,;inty{returnx+y;}void main{int a=2,b=5,c=8tout;程序运行后的输出结果是funintfuna+c,b,a-C}编译出错A.B.9C,21D.
9.派生类的成员函数不能访问基类的18公有成员和保护成员公有成员.私有成员保护成员A.B.C D.以下程序中,错误的行为是
19.D#includeiostream.h
②③classA{©public;5int n=2();6A intval{coutvalendl}
⑦;-A{}
⑧};
⑨⑩void main]();10A a0)11
⑤⑥⑦A B.C D.
10.可以用的形式访问派生类对象的基类成员其中是()20P.a Pa,a私有继承的公有成员公有继承的私有成员公有继承的保护成员公有继承的公有成员A B.C.D.如果类被说明成类的友元则()
27.A B•・类的成员即类的成员A.A B类的成员即类的成员B.B A类的成员函数不得访问类的成员C.A B.类不一定是类的友元
21.D BA.下列关于对象初始化的叙述中,正确的是22定义对象的时候不能对对象进行初始化A.定义对象之后可以显式地调用构造函数进行初始化B..定义对象时将自动调用构造函数进行初始化C在一个类中必须显式地定义构造函数实现初始化D..下列关于完全二叉树的叙述中,错误的是()除了最后一层外,每一层上的结点数均达23o A.到最大值.可能缺少若干个左右叶子结点B.完全二叉树一般不是满二叉树C.具有结点的完全二叉树的深度为D[Iog2n]+1
三、.填空题(题)
212.数据库系统中实现各种数据管理功能的核心软件称为【】24下列程序的输出结果是[
25.]o#includeiostream,h voidmain{char a[]=abcdabcabfgacdint il=0,i2=0,i=0;while a[i]{if a[i]=a il++;;if[i]==b i2++a;i++coutili2endl;.顺序存储方法是把逻辑上相邻的结点存储在物理位置【】的存储单元中26数据库保护分为安全性控制、【】、并发性控制和数据的恢复
27.一般来说,数据库的设计过程要经历个大的阶段,即可行性分析与研究阶段、系统设计
28.3阶段、设计实施与系统运行阶段概念设计、逻辑结构设计、物理结构设计属于数据库设计的【】阶段.诊断和改正程序中错误的工作通常称为29实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系如果一个学校
30.有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于[]的联系类含有血型数据成员两个对象相等是指它们的相同下面的函数重载了运3L Staff ID,StaffID算符二二,它用来判断两个对象是否相等,相等时返回否则返回请将横线处Staff true,false缺失部分补充完整二二bool Staff::Staff constStaff s;return在下面的程序的横线处填上适当的语句,使该程序的输出为
32.12#includeiostream.h usingnamespacestd;class Base public:int a,b;Baseint i{a=i;};class Derived:public Baseint a;public:Derivedint x:Basex,bx+l{;void show〃输出基类数据成员的值acoutbendl;;int mainDerived dl;d.show;return0;非成员函数只有在声明为类的【】才能访问这个类的所有成员
33.private数据流图的类型有【】和事务型
34.在下面的程序的横线处填上适当的语句,是该程序的输出为
35.12#includeiostream;usingnamespacestd classBasepublic;int a;Baseint i{a=i};class Derivedpublic Base;intapublic Derivedintx Basex,bx+l{}void show[];〃输出基类数据成员的值a;coutbendl;int main;Deriveddl;d.show;return0}
四、程序改错题题
10.使用打开考生文件夹下的源程序文件36VC++
6.0该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个
1.cpp,字符串,并将结果保存到文件中l.txt注意不要改动函数,不能增加或删除行,也不能更改程序的结构,错误的语句在main夫*★★的下面//******error**试题程序#include iostream#includefstream//********error********;usingstdvoidWriteFilechar*s;ofstreamoutl//********error********;outl.openl.txt,binary|app;;forinti=0s[i]!=0i++//********Q********;outl.putss[i];outl.closevoidClearFile;ofstreamoutl;outl.openl.txt;outl.closeintmain;chars
[1024];ClearFile;coutpleaseinputastrin9:endl;cin.getlines,1024;WriteFiles;returnO}.使用打开考生文件夹下的源程序文件该程序运行时有错误,请改正错误,37VC++
6.0L cpp,使程序正常运行,并且要求最后一个必须抛出执行的任何异常catch程序异常,输出信息为error0ERROR注意不要改动函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/main/的下面******errcr******试题程序#includeiostream,h intmaintry{;throwerror}//********error********catchchars{;coutsendltry{;throwintO}//********error********catch{;coutiendl}try;throw0;throwerror。