还剩42页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2022年江西省吉安市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:班级:姓名:考号:、
1.选择题(10题).有如下程序#includeiostream.husingnamespacestd;classTestClass{public:TestClass{coutdefaultconstructor\nn;TestClassconstTestClassx{contcopyconstructor\nn;}TestClassuserCodeTestClassb{TestClasscb;returnc;}intmain{TestClassad;coutcallinguserCode\nn;d=userCodea;return0;}执行上面程序的过程中,构造函数TestClass和TestClassconstTestclassx被调用的次数分别是()A.2次3次B.3次2次C.都是2次D.都是3次.下列关于成员函数特征的描述中错误的是()A.成员函数可以重载B.成员函数一定是内联函数C.成员函数可以是静态的D.成员函数可以设置参数的默认值.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是A.ios_base::CHrB.ios_base::begC.ios_base::outD.iosbasc::cnd.对建立良好的程序设计风格,下面有关语句结构的描述中,错误的是usingnamespacestd;intmainchar*p=nabcdefghn*r;long*q;q=long*p;q++;r=char*q;coutrendl;return0;该程序的输出结果是【】
四、程序改错题10题
36.使用VC++
6.打开考生文件夹下的源程序文件
1.cpp但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确程序输出88注意错误的语句在/********error********/的下面修改该语句即可,其他的语句不能修改试题程序#includeiostream.hclassCOpublic staticintn=O CO(n++)〜CO(n—))slerror不不不不不不不不intCOn;voidmain(COobj;COobj2[7];CO*C=NULL c=obj7,kJkJ、!、!\!lk1k1k1♦!kT7,、!不干个下不不不个en^^r个个个不不不不不eout«C.n«endl;cout«C0n«endl;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=1number=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hclassTCpublic TCintinumber=i;}voidSetNumberintmnumber=m;intGetNumberconstreturnnumber;voidPrintconstcout«nnumber=n«number«endl;}private intnumber;};voidmainvl**J*J*1vi*个个个个个个个个^^nor个个个个个个个个TCobjl;objl.Print;TCobj23;vl*vl#vl#kL*vL*vl*vl*vl*kL*vl*个个个个不不个个^^nor个个个个不个个objl.number=10;!1********enror*******TC.SetNumberlOO;objl.Print;obj
2.Print;.使用VC++
6.0打开考生文件夹下的源程序文件
1.行时有错误,请改正程序中的错误,使得程序输出98765注意错误的语句在/********error********/的下面可其他的语句不能修改试题程序#includeiostream.hclassTCvl*vl*vt*vt*不不不不不不不不不小不不不不不不TCintim_i=i;voidprintcout«—m_ipublic intm_i;intmainerrorinti;TC0410;whilei5!****************!i++
04.print;cout«endl;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******error******的下面,修改该语句即可试题程序#includeiostream・hclassTCinti;public TC;voiddisplay;〜TC;};errorcout«nConstructorn«n,二i=0;errorTC displaytout«ni=n«i«nn«endl;TC TCCOUI«HDestructorn«endl voidmainTCa;a.display;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cppo本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结试题程序:#includeiostream.hvoidmaininti=O;charstr
[120];cout«nEnterastringendwith.n«endl;cin.getlinestr120;vl*vL*vl*vl*kL*vl*个小小小个个不不^^n*or个个个个不不个个whilestr£#*1^个个个个个个个个^^nor个个个个个个个个str[i]=str[i]-a+A;1++;cout«str«endl;return;.使用VC++
6.打开考生文件夹下的源程序文件
1.cpp本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序#includeiostream.hvoidmaininti=O;charstr
[120];cout«Enterastringendwith.«endl;vl*kI**1*1**1kJvl*k£个个个个个个个个^^nor个个个***个个个个vt*vL*vL*个个个不不不不不•不不不不’不个不whilestr^1*.!vt*k1*个个个个个不小个^^nor个个个个个个个个ifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeofSl=5sizeofs2=10sizeofs3=l注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面⑴不能删除assert语句2只能修改后面的数字提示assert函数如果为假,则会产生一个中断异常试题程序#includeiostream.h#includeassert.hvoidmainchartsl=nabcn:assertsizeofs1==3:cout«nsizeofsl=5n«endl;chars2
[10]=nabn errorassertsizeofs2==2;cout«nsizeofs2=10n«endl;chars3=23:k17,7,7,kIk|77enor个个个个个个个个assertsizeofs3==4;cout«nsizeofs3=r!«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******error******的下面,修改该语句即可A.在一行内只写一条语句B.程序编写应优先考虑清晰性C.程序编写要做到效率第一,清晰第二D.避免不必要的转移.定义如下枚举类型enum{MondayTuesdayWednesdayThrusdayFriday=2};贝下歹lj语句正确的是oA.表达式Wednesday==Friday的值是trueB.Dayday;day=3C.Dayday;day=Monday+3D.Dayday;day=Tuesday+l
0.有以下函数charfunchar*p{returnP;该函数的返回值是A.无确切的值B.形参p中存放的地址值C一个临时存储单元的地址D.形参p自身的地址值.在最坏情况下,冒泡排序所需要的比较次数为A.n/2B.n+l/2C.nn-l/2D.nn+l/
2.定义如下枚举类型enumNumber{one=1two=2four=4eight=8贝U枚举类型Number的取值范围是oA.l〜8B.0〜8c.i〜15D.0-
15.磁盘文件操作中,打开磁盘文件的访问模式常量时,是以追加方式打开文件的A.inB.outC.appD.ate.下列关于虚基类的描述,错误的是o试题程序:#includeiostream.hclassTCinti;public TC;voiddisplay;〜TC;k17,^1*k!kL7“7,^1不不小小不不enor不不不不小不TC TCcout«nConstructorn«ni=0;不个个个不不error不不个个不不TC displaytout«ni=n«i«nn«endl;*£#不下不不不不en*or不可不不不不TC TCCOUI«nDestructorn«endl voidmainTCa;a.display;
44.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件
1.txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在************卜।hj0试题程序:#includeiostream#includefstream*1^*1*si*不不不不不不不不不不不不不不不不usingstd;voidWriteFilechar*sofstreamoutl;个个个个小个个个^^nor个个小个个个个个outl.openHl.txtbinary|app;forinti=0;s[i]!=0;i++vl*vl*vl*个个个个个个个个^^rror个个***个个个个个outl.putss[i];outl.close;voidClearFileofstreamoutl;outl.opennl.txt;outl.close;intmainchars
[1024];ClearFile;cout«npleaseinputastrin9n«endl;cin.getlines1024;WriteFiles;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=lnumber=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream.hclassTCpublic TCintinumber=i;voidSetNumberintmnumber=m;intGetNumberconstreturnnumber;voidPrintconstcout«nnumber=n«number«endl;private intnumber;voidmainerrorTCobjl;objl.Print;TCobj23;kL*7objl.number=10;II********enor*******TC.SetNumberlOO;objl.Print;obj
2.Print;
五、综合应用题2题.使用VC++
6.0打开考生文件夹下的源程序文件
3.cpp其中定义的类不完整,按要求完成下列操作,将类的定义补充完整每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整1定义类TCFruit的私有静态数据成员float型变量AllWeight和血型变量AHN0请在注释1后添加适当的语句2完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加请在注释2后添加适当的语句3在析构函数中在AllWeight中减去weight然后AHN自减,请在注释3后添加适当的语句4完成静态成员变量的初始化为0请在注释4后添加适当的语句注意增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码试题程序:#includeiostream.hclassTCFruitprivate floatWeight;//vL*1kK*vt*/,.、■卜―J、I..,,―卜卜.、―「staticintAHNo;public TCFruitfloatw//*JvL**X*kL*1**J*1*kL«vf/JrywAllWeight+=w A11N0++:-TCFruit//k!*I*1*1kL*k!k!k!k!k1*vl/*J*4rjwA11Weight-=Weight voiddisplaycout«nSellaFruitwithn«Weight«nk9n«endl;cout«^Allsellnumber H«AllNo«endl;cout«nAllsellweight n«AllWeight«nk9nendl«endl;);1I********4********floatTCFruitAllWeight=O.0;intmainTCFruitFruitll.2;Fruitl.display;TCFruitFruit
22.3;Fruit
2.display;returnO;
47.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3其中声明的DataList类,是一个用于表示数据表的类DataList的重载运算符函数Operator+其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和请编写这个perator+函数程序的正确输出应该是两个数据表123456345678两个数据表之和468101214要求:补充编制的内容写在“〃********333********”与“〃********666********”之间,不得修改程序的其他部分注意程序最后将结果输出到文件ut.dat中输出函数writeToFile已经编译为bj文件,并且在本程序中调用//DataList.h#inCludeiostreamusingnamespaCestd;ClaSSDataList{〃数据表类intfen;double*d;public DataListintlendoubledata[]=NULL;DataListDataListdata;intlengthConst{returnlen;}doublegetElementintiConsttreturnd[i];}DataListoperator+ConstDataListlistConst;〃两个数据表求和voidshowConst;//显示数据表;voidwriteToFileChar$ConstDataList;//main.Cpp#inCludeDataList.hDataListDataListintlendoubledata[]lenien{d=newdouble[len];forinti=0;ilen;i++d九i=data=NULLO.0data[i];DataListDataListDataListdata lendata.len{d=newdoubletlen];forinti=0;ilen;i++d[i]=data.d[i];DataListDataListOperator+Con8tDataListlistConst{〃两个数据表求和double*dd=newdoubletlist.1ensth];〃********333********〃********666********returnDataListlist.1engthdd;}voidDataListshowConst{〃显示数据表frintoi=0;ilen-l;i++eout«d[i]«\Cout«d[len-1]«endl;intmain{doublesl[]={l23456};doubles2[]={345678};DataListlist16silist26s2;〃定义两个数据表对象eoutw”两个数据表”《endl listl.show list
2.show;eoutvvendl«”两个数据表之和vVendl listl+list
2.show;writeToFilef^\listl+list2;return0
六、
3.综合应用题(2题)
48.使用VC6打开考生文件夹下的工程MyProj8o此工程包含一个源程序文件MyMain
8.cpp该程序实现栈的入栈和出栈的操作其中有两个类一个是节点类node它包含节点值和指向上一个节点的指针prey;另一个类是栈类stack它包含栈的头指针top但类的定义并不完整请按要求完成下列操作,将类Sample的定义补充完成
①定义私有节点值data它是血型的数据,以及定义一个指向上一个节点的指针prev请在注释“//**1**”之后添加适当的语句
②完成构造函数nodeintdnode*n的定义,使得私有成员data和prev分别初始化为d和no请在注释“〃**2**”之后添加适当的语句
③完成类stack的成员函数pushinti的类体内的定义函数push实现入栈这个操作即把形参i压入栈中,那么此时应该创建一个新的节点,并让这个节点的prev指针指向栈顶请在注释“〃**3***之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件MyMain
8.cpp清单如下//MyMain
8.cpp#includeiostreamusingnamespacestd;classstack;classnodeprivate:〃**]**public:nodeintdnode*n〃**2**friendclassstack;;classstacknode*top;〃栈头A.设置虚基类的目的是为了消除二义性B.虚基类的构造函数在非虚基类之后调用C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
二、单选题(13题)
11.下列关于虚函数的描述中,正确的是()A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型.最简单的交换排序方法是()A.快速排序B.选择排序C.堆排序D.冒泡排序.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系public:stacktop=0;voidpushinti〃**3**}intpopnode*t=top;iftoptop=top-prev;intc=t-data;deletet;returnc;return0;};intmainstacks;s.push6;s.push3;s.pushl;return0;
49.使用VC6打开考生文件夹下的工程test28_3o此工程包含一个test28_
3.cpp其中定义了类Person但该类的定义并不完整请按要求完成下列操作,将程序补充完整1定义类Person的私有数据成员forename、surname和moneyforename和surname都是char型的指针数据,money是double型的数据请在注释“〃**1**”之后添加适当的语句2完成类Person的带三个参数的构造函数Personchar*fchar*sdoublem分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money请在注释“〃**2**”之后添加适当的语句3完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“〃**3**”之后添加适当的语句4完成类Person的成员函数display的定义,使其以格式“fbrnamesurnamehasmoney”的形式输出内容,请在注释“〃**4*”之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容输出结果如下RichardBerkhas
1000.56源程序文件test28_
3.cpp清单如下#includeiostream.h#includestring.hclassPersonprivate:〃**]**doublemoney;public:Personcharchar*sdoublem;〜Person;voiddisplay;;Person::Personchar*fchar*sdoublem〃**2**strcpyforenamef;surname=newchar[strlens+l];strcpysurnames;money=m;Person::-Person〃**3**voidPerson::display〃**4**voidmainPersonpnRichard\nBerk\
1000.56;p.display;LA解析由主函数入手,定义了类TestClass的对象a和d当类对象进入其作用域时调用构造函数,构造函数在建立对象时由系统自动执行而且只执行一次因为定义了两个对象,所以构造函数TestClass被调用的次数是2“d=userCodea;”语句d中调用成员为a的userode成员函数,所以是3次
2.B解析C++中,成员函数可以是内联函数,也可以不是内联函数在类定义体外实现的函数可以通过在函数说明和定义上分别加上inline来表示函数是内联函数,否则就不是内联函数.A解析ios_base::cur表示相对当前位置需要计算的文件字节数偏移量,ios_base::beg表示从文件头位置开始计算的文件字节数偏移量,ios_base::end表示从文件末尾位置开始计算的文件字节数偏移量.C解析:语句结构的风格对建立良好的程序设计风格很重要选项A、B、D都是良好的语句结构的风格,考生应在编程中注意选项C是错误的,好的语句结构风格要求程序编写要做到清晰第一,效率第二.A解析本题考查枚举类型的定义和使用枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点枚举类型的第一个常量默认值是0枚举类型常量的值允许彼此相同虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较根据以上知识我们可以得出B)、C)、D)选项都不正确
6.B.C解析在长度为n的线性表中,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍从后往前的扫描,共需n(n-l)/2o.D解析enum<枚举类型名>{<枚举元素表〉};其中,关键词\u3000enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成其中如果默认,枚举类型从开始赋值,本题中最大值为8那么它与其他值和的最大计算结果为\u300015所以它的取值范围为〜
15.C
10.BBo【解析】虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行.C解析本题考核对虚函数的了解在成员函数声明的前面加上virtual关键字修饰,即把该函数声明为虚函数虚函数可以是另一个类的友元函数,但不是静态成员函数所以A、B选项的描述都是错误在派生类中可以重新定义从基类继承下来的虚函数,在派生类中重定义虚函数时,函数名、形参表和返回值类型必须保持不变,所以D选项是错误的.D冒泡排序(BubbleSort)的基本概念是依次比较相邻的两个数,将小数放在前面,大数放在后面即在第一趟首先比较第1个和第2个数,将小数放前,大数放后然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后至此第一趟结束,将最大的数放到了最后在第二趟仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)如此下去,重复以上过程,直至最终完成排序.C解析在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系所以选项A错误对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表所以,选项B、D说法是错误的一个关系的属性名表称为关系模式也就是二维表的表框架,相当于记录型因此,选项C说法正确.DD【解析】本题考查虚函数的概念虚函数是非静态的成员函数它不能是友元函数,但可以在另一个类中被声明为友元函数虚函数必须是类的成员函数,虚函数声明只能出现在类定义的函数原型声明中而不能在成员函数的函数体实现的地方,一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型.A解析关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成.A解析public允许类对象对类的属性和方法进行访问;private不允许类对象访问类的属性和方法;protected不允许类及其子类的对象访问父类的属性和方法,但子类可以访问父类中定义的protected属性和方法
17.C应该先做++运算,然后进行%运算,最后比较不等式,实际上最后输出的结果就是被3除,余数为2的不大于8的数
18.D本题主要考查了函数重载函数重载允许用同一个函数名定义多个函数被重载的函数必须要有不同的形参列表(即参数个数不同或参数类型不同),不可以根据函数返回值类型来重载函数
19.D只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为C
①通过默认构造函数初始化c所以不正确常成员函数只能引用本类中数据成员,而不能修改它,所以
②不正确静态成员函数由于没有this指针,所以不能访问本类中的非静态成员,所以\r\n
③错误
20.AAo【解析】本题考查C++语言的数据类型第一个枚举常量的值为0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时在前一枚举常量值的基础上以此增
121.AAo【解析】选项A中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫不相干的函数;重载函数中编译是根据参数表进行选择的,包括参数的个数和类型
22.A解析本题考查的知识点是指针的赋值题目中的语句int*p二k;有两个作用首先,定义了一个int型指针p;然后,将变量k的地址k赋给刚定义的指针p所以等效的语句序列为int*p;p=k;应该选择Ao
23.B本题考查公用继承对基类成员的访问属性在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有所以本题中n、k和setK变为了派生类的保护成员,不能直接使用,即
1、
3、4错误所以B选项正确.x.operator-x.operator-解析本题考核运算符函数的两种调用方式假定已经作为某个类的成员函数重载了二元运算符+且cl、c2都是该类的对象,贝[Icl.operator+c2与cl+c2函数相同如果+作为该类的非成员函数重载,则operator+clc2与cl+c2相同.内存地址内存地址.partl=1501part2=
1.
03.实体完整性实体完整性.物理独立性物理独立性解析数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性其中物理独立性是指数据的物理结构包括存储结构、存取方式改变时,不需要修改应用程序而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序..逻辑判断逻辑判断解析绘制流程图时对实体的描述用椭圆形表示、行动方案用矩形表示、问题用菱形表示、箭头代表流动方向.类类解析本题考查的是类模板的使用方式,就是把类模板的一般化定义实例化为一个真正的类.*str==NULL或者!*str0*str==NULL或者!*str\r\nO解析如果结束返回值.函数模板函数模板解析本题考核函数模板与重载函数的区别重载函数通常是基于不同的数据类型完成类似的操作;而函数模板则是对不同的数据类型完成相同的操作,它比重载函数的要求更严格.temp=a[i]temp=*a+i或temp=*i+atemp=a[i]或temp=*a+i或temp=*i+a
34.
2.efghefgh解析本题定义了一个字符型指针变量p并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量q首先通过语句“a=long*p;”,把p的地址值强制转换为长整型地址值并赋值给小然后执行“q++;”,地址值增加了4执行语句“r=char*q把长整型指针变量q的值再强制转换成字符型地址值并赋给rr的值应为字符串中字符“e”的地址最后输出r指向的字符串.1“staticintn=O应改为staticintn;2“intCOn;”应改为“intCOn=0;34tcout«c.n«endl;应改为cout«c-nvendl;【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;,第2处要给n赋值,第3处输出时引用c的对象,应改为cout«c-nendl;.1应改为TCobjll;”2应改为“Objl.SetNumberlO;3应改为“0bj
2.SelNumberlOO;【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl根据TC类构造函数的定义TCinti存在整型参数,并且题目要求第一个输出结果两1所以补全参数1即第1处的“TCobjll;第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值在C++中成员函数的使用形式应该是对象名.成员函数,所以修改为“objl.SetNumberlO;类是对象的抽象,而对象是类的具体实例第3处“TC.SetNumberlOO;”语句中的TC为类,并不是对象,这里应该使用定义的对象,即bj2所以将语句修改为“obj
2.SetNumberlOO;.1应添加“public\n2“inti”应改为“inti10;\n3“i++;”应改为“i-;\n【解析】本题主要考查的是成员的访问属性成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问故应在构造函数前添加“public:,否则该类无法被实例化变量的初始化可以通过号,也可以和初始化对象一样添加构造参数,题目已要求使用后者本题要求输出5个数,while的循环变量iB.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表
14.下面关于虚函数的描述中正确的是()A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型.下列不是关系模型的组成部分的是()A.关系列表B.关系数据结构C.关系操作集合D.关系完整性约束.为了使类中的成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()A.publicB.protectedC.staticD.private.Tilil程序的运行结果是()#includeiostream.hvoidmain(inti=l while(i=8)if(++i%3l=2)continue elseeout«i;A.25B.36C.258D.369每次减1在i5时循环,故i初始化应为10若循环中i每次增1则循环永远不会退出
39.1应改为“TCTC”2应改为voidTCdisplay”⑶应改为“TC〜TC”【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类,使用格式为“类名成员函数〉参数函数,因此第1处应改为“TCTC”,默认构造函数没有参数由第2处“TCdisplay”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTCdisplay”由第3处的语句“TCTC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”
40.1应改为“ein.getlinestr120;”\n2应改为whilestr[i]”\n3应改为ifstr[i]=astr[i]=20\n【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数终止标志字符”所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifst巾]=a”语句是判断字符str[i]是否为小写字符而现有的语句只是判断字符是否大于a但是小写字符应该是a至IJ2所以修改为“ifst巾]=astr[i]=z”
41.1应改为“ein.getlinestr120;”2应改为“w如3应改为“ifst巾]=astr[i]v=2”【解析】本题中要求以输入字符“”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数终止标志字符广,所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”第3处的“ifst巾]=a”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为44ifstr[i]=astr[i]=z
042.1应改为assertsizeofsD==4;\n⑵应改为assertsizeofs2==lO;\n3应改为assertsizeofs3==l;\n【解析】assert函数如果为假,则会产生一个中断异常所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常uassertsizeofs1==3;”语句中“sizeofsl==3”为假,这会使程序产生异常,不能正常执行因为strl的值为abc但是它还有一个尾符,它的长度应该是4而不是3所以在第1处修改为“assertsizeofsl尸=4丁str2
[10]说明str2的空间为10在第2处修改为“assertsizeofs2尸=10;charstr3=23;语句说明23是字符,所占存储空间为1所以修改为4assertsizeofs3==l;.1应改为“TCTC”\n2应改为voidTC二display”\n3应改为“TC〜TC”\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“”,作用域运算符用采表示某个成员属于哪个类,使用格式为“类名<成员函数>参数函数,因此第1处应改为“TCTC”,默认构造函数没有参数由第2处“TCdisplay”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTCdisplay由第3处的语句叮2丁小可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”.1应改为usingnamespacestd;2应改为outl.openl.txtiosbinaryIiosapp;3应改为“outl.puts[i];”【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中输入、输出方式是在ios类中定义的所以“outl.openl.txtbinaryIapp;”语句缺少类ios即第2处的语句修改为“outl.openl.txtiosbinaryIios叩p;第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为Uoutl.puts[i];”.⑴应改为“TCobjll;\n2应改为“Objl.SetNumberlO;\n3应改为“0bj
2.SelNumberlOO;\n[解析]本题第1处的“TCobjl;”语句是声明TC类的对象Objl根据TC类构造函数的定义TCinti存在整型参数,并且题目要求第一个输出结果两1所以补全参数1即第1处的“TCobjll;第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值在C++中成员函数的使用形式应该是对象名.成员函数,所以修改为“objl.SetNumberlO;类是对象的抽象而对象是类的具体实例第3处“TC.SetNumberlOO第语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2所以将语句修改为“obj
2.SetNumberlOO;.1应添力口,,加311\¥班比;”2应添加“Weight=w;⑶应添加“AllNo-;”4应添加“intTCFruitAllNo=0;”【解析】静态数据成员声明时需使用关键字static因此第1处应添加staticfloatAllWeight;构造函数用来对类成员进行初始化,在TCFruit类的构造函数TCFruitfloatw中,完成weight的初始化,并把这个w加到AllWeight中,并且AllNo自加,因此第2处应添加“weight=w;调用析构函数相当于退出,这时AllWeight中减去weight然后A11N自减,因此第3处应添加“AUNo-;静态数据成员的初始化格式为“数据类型类名静态数据成员=初始值户因此第4处应添加“intTCFruitAllNo=0;”.fOTinti=0;ilen;++i〃遍历对象list中的数组和d数组,把对应的值相加后放到数组dd中dd[i]=d[i]+list.d[i];..l\r\nchar*forename;\r\nchar*surname;\r\n2\r\nforename=newchar[strlenf+1];\r\n3\r\ndelete[]forename;\r\ndelete[]surname;\r\n4\r\ncoutforenamennsurnamenhasnmoneyend1;1\r\nchar*forename;\r\nchar*surname;\r\n2\r\nforename=newchar[strlenf+1];\r\n3\r\ndelete[]forename;\r\ndelete[]surname;\r\n4\r\ncoutforenamennsurnamenhasnmoneyend1;解析主要考查考生对于类的定义和字符指针的动态空间申请和释放的掌握,具中⑵中new关键字是动态申请空间,里面使用了函数strlen该函数是返回参数字符串的长度,之所以加一是要加入字符串结尾标志,这一点考生切记
(3)中delete是释放动态内存的关键字,释放一位数组占用的内存格式是先写口,之后是指针名,括号内不写数组的大小.已知函数fun的原型为intfunintintjnt;下列重载函数原型中错误的是OA.charfunintint;B.doublefunintintdouble;C.intfunint9clar*;D.floatfunintintent;.有如下类定义classTestpublic Test{a=0;c=0;}〃
①intfimA.const{this-a=a;〃
②staticintg{returna;f//®voidhintB.{Test.b=b;};〃
④private inta;staticintb;constintC;:intTestb=0在标注号码的行中,能被正确编译的是A.
①B.
②C.
③D.®.已知枚举类型定义语句为enHmToken{NAMENUMBERPLUS=5MINUSPRINT=10};则下列叙述中错误的是()oA.枚举常量NAME的值为1B.枚举常量NUMBER的值为1C•枚举常量MINUS的值为6D.枚举常量PRINT的值为
10.下列对重载函数的描述中,错误的是()oA.重载函数中不允许使用默认参数B.重载函数中编译是根据参数表进行选择的C.不要使用重载函数来描述毫不相干的函数D.构造函数重载将会给初始化带来多种方式.语句int*P=k;定义了指针P与这个语句等效的语句序列是()A.int*p;P=k;B.int*P;P=k;C.int*p;*P=k;D.int*p;*P=k;.有如下程序#includeiostreamusingnamespacestd;classAA{intk;protected intn;voidsetKintk{this-k=k;}public voidsetNintn{this-n=n;}};classBB publicAA{/*类体略*/};intmainBBX;An=l;//IBsetN2;//2Ck=3;//3DsetK4;//4return0;在标注号码的四条语句中正确的是oA.lB.2C.3D.4
三、
2.填空题12题.如果表达式-X中的是重载的类运算符,采用运算符函数调用格式,该表达式还可以表示为【】.指针变量所保存的不是一般的数据值,而是程序中另一个对象的.写出下列程序的运行结果【】#includeiostreamhvoidfuncdoublexintpart1doublepart2{partl=intx+500:part2=x+500-part1*100;voidmain{intn;doublexf;x=
1001.0103;funcxnf:coutPartnnpart2=nfendl.关系中的“主键”不允许取空值是指[】约束规则.数据的独立性分为逻辑独立性与物理独立性当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为O.程序流程图中的菱形框表示o.类模板的使用实际上是将类模板实例化成一个具体的【].在下面函数的横线处填上适当的内容使该函数能够利用递归方法求解字符串str的长度(不得使用系统提供的字符串处理函数)intGetLenchar*strif[]return[];elsereturn1+GetLenstr+1;.[]使一个函数可以定义成对许多不同数据类型完成同一个任务.以下函数模板min的功能是返回数组a中最小元素的值请将横线处缺失部分补充完整templatetypenameTTminTa[]intnTtemp=a[O];forinti=lin;i++ifa[i]temp;returntemp;.有如下类声明classMyClassinti;private:intj;protected:intk;public:intmn;其中,私有成员的数量为【】.若有如下程序段#includeiostream。