还剩41页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2023年安徽省蚌埠市全国计算机等级考试C++语言程序设计模拟考试含答案学校:班级:姓名:考号:
一、
1.选择题10题
1.以下程序段的执行结果是#includeiostream.hVoidmain{intay;a=10;y=ldo{a+=2;y+=a;couta=aMy=Hy\nn;ify20break;}whilea=14;}A.a=12y=12a=14y=16a=16y=20B.a=12y=12a=14y=26C.a=12y=12a=14y=26a=14y=44D.a=12y=
12.下列关于成员函数特征的描述中,错误的是A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的.下面这个程序的结果是#includeiostream.hclassA{private inta;public voidseta;intgeta;};voidA::seta{a=1;}intA::geta{returna;}classB{private inta;public:voidseta;intgeta;;voidB::seta{a=2;}intB::geta{returna;}classC publicApublicB{private:intb;public voiddisplay;};voidC::display{intb=geta;coutb;}voidmain{Cc;c.seta;c.display;}A.lB.2C.随机输出1或2D.程序有错.若有以下程序#includeiostreamusingnamespacestd;classBasepublic:voidwho{coutBase11endl:};classDerived1:publicBasepublic:voidwho{coutDerived1endl;}};intmainBase*p;Derived1objl;p=obj1;p-who;return0;则该程序运行后的输出结果是【】.在算法正确的前提下,评价一个算法的两个标准是【】.需求分析的步骤是需求获取、需求描述、需求验证和【】.每个以符号开头的行,为编译预处理行
四、程序改错题(10题).使用VC++
6.0打开考生文件夹下的源程序文件
1.叩p本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“”时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream.hvoidmain(inti=O;charstr
[120];cout«MEnterastringendwith.«endl;/不不不不不不不不prrcr不不予不不不苓不cin.getlinestr120;whilestr/年不不不不不不小prrcr年亭寿寿寿寿不不ifstr[i]=astr[i]=str[i]-a+A;i++;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为errorOERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errr******的下面试题程序#includeiostream.hintmaintrythrowCerror;/不不不不不不不不prrcr不不不不不不不不catchcharscout«s«endl;}trythrowint0;/1■£*■£*■£*«£•/小小小小小小小小prrcr不不个不不不不不catchcout«i«endl;trythrowO;throwC^rror;//•1••1•«1•«1•«1«£•«£•«£•«£•/不不不不小不不小prrcr不不不不不不不不catchcout«nERROR«endl;returnO;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常程序异常,输出信息为error0ERROR注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面试题程序:#includeiostream.hintmaintrythrownerrorH;///不举**汴举举不pj*|*cr‘人catchcharscout«s«endl;1trythrowint0;catchcout«i«endl;1trythrowO;throwCerror*;}//«*•«**«**«*»«*»/***年**不不prrcr不•・、,.、,.、,.、•・••・、catchcout«ERROR«endl;returnO.使用VC++
6.0打开考生文件夹下的源程序文件
1.叩p该程序运行时有错请改正程序中的错误,使程序输出的结果为1003732注意错误的语句在//******error******的下面,修改该语句即可试题程序:#includeiostream.h/KMKM/*5*5*5*5*rprmr不不不不不不voidmain/*不不***prmr******intm=0142/小小小小小小prrcr不不不不不不intn=0X27intq=32;coutmendl;coutnendl;coutqendl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructori=0Destructor注意错误的语句在//******error******的下面,修改该语句即可试题程序#includeiostream.hclassTCinti;public TC;voiddisplay;〜TC;II******e〔Tor******TC TCcout«Constructor«Hi=0;//**不**汴ermr******TC displaytout«i=«i«n«endl;TC TCCOUI«Destructor«endl voidmainTCa;a.display;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=lnumber=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******error******的下面试题程序#includeiostream.hclassTCpublic TCintinumber=i;voidSetNumberintmnumber=m;intGetNumberconstreturnnumber;voidPrintconstcout«number=«number«endl;private intnumber;voidmain//***«*««*»«*««*«//****举举**pji*cr********TCobjl;objl.Print;TCobj2⑶;//%1*»1**1**1**1*•的•2«£•«£•«£•«£•«£•/小小小小小小小年prrcr不不不不不不不不objl.number=10;II********error*%******TC.SetNumberlOO;objl.Print;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件
1.txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******en*or******的下面°试题程序#includeiostream#includefstream///年小不小不小小小errcr不不不不不不不不usingstd;voidWriteFilechar*sofstreamout1;outl.openl.txtbinary|app;forinti=0;s[i]!=0;i++//KWKM/不不不不不不不不error不不不不不不予不outl.putss[i];outl.close;voidClearFile.下列叙述中,不属于软件需求规格说明书的作用的是A.便于用户、开发入员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发入员进行需求分析.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF则该二叉树的后序遍历为A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG.下面关于break语句的描述中,不正确的是A.break可以用于循环体内B.break语句可以在for循环语句中出现多次C.break语句可以在switch语句中出现多次D.break语句可用于if条件判断语句内.在表达式x-y中,”『是作为非成员函数重载的运算符若使用显式的函数调用代替直接使用运算符这个表达式还可以表示为A.x.operator-yB.operator-yxC.yoperator-xD.operator-xy.关于虚函数下面说的正确的是ofstreamout1;outl.openl.txt;outl.close;intmaincharsf10241;ClearFile;cout«Hpleaseinputastrin9u«endl;cin.getlines1024;WriteFiles;returnO;
1.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp0本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符时,默认字符输入结束,最后把结果输出到屏幕中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序inti=O;charstr
[120];cout«Enterastringendwith.«endl;/t/*i;i*i**r*r*r*r*rPITOI*不不不不不不不不cin.getlinestr120;whilestr//*1*一[・4・»!•//小小・*・*t**小prmr不不不不不不不不ifstr[i]=astr[i]=str[i]-a+A;i++;cout«str«endl;return;.使用VC++
6.0打开考生文件夹下的源程序文件
1.cpp该程序运行有问题,请改正main函数中的错误,使程序的输出结果为number=lnumber=10number=100注意不要改动main函数,不能增加或删除行也不能更改程序的结构,错误的语句在//******errcr******的下面试题程序:classTCpublic TCintinumber=i;voidSetNumberintmnumber二m;intGetNumberconstreturnnumber;voidPrintconstcout«nnumber=«number«endl;private intnumber;);voidmain//MM/*******^errcr不予予不不不不不TCobjl;objl.Print;TCobj23;//*!•*!•*!•*•/不不不不不不不不prrcr不不不不不不不不//********Cff0f*%0******TC.SetNumber100;objl.Print;obj
2.Print;.使用VC++
6.0打开考生文件夹下的源程序文件I.cpp该程序运行时有错误,请改正程序中的错误本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件
1.txt中注意不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在******error******的下面试题程序#includeiostream#includefstreamusingstd;voidWriteFilechar*sofstreamout1;erroroutl.openl.txtbinary|app;forinti=0;s[i]!=0;i++outl.putss[ij;outl.close;}voidClearFileofstreamoutl;outl.openl.txt;outl.close;intmainchars
[1024];ClearFile;cout«”pleaseinputastrin9*«endl;cin.getlines1024;WriteFiles;returnO;
五、综合应用题2题.使用VC++
6.打开考生文件夹下的源程序文件
3.cpp其中定义了类A、A1和A2其中A1类由A类公有派生,A2类由A1类公有派生1定义类A的构造函数,该构造函数有一个整型的参数x在构造函数中请将x赋值给数据成员a请在注释“//********1*********之后添加适当的语句⑵定义类A1的构造函数,该构造函数有两个整型的参数x和y在构造函数中请将x赋值给数据成员b将y作为基类A构造函数的参数值传人请在注释“//********2********之后添加适当的语句⑶定义类A2的构造函数,该构造函数有3个整型的参数xy和z在构造函数中请将x赋值给数据成员C将y和z分别赋值给基类A1构造函数的参数x和y请在注释“//********3********”之后添加适当的语句4完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开请在注释“//********4********”之后添加适当的语句程序输出结果如下73738注意除在指定的位置添加语句之外,请不要改动程序的其他部分试题程序#includeiostream.hclassAinta;public********I********intgeta{returna;}};classAI publicAintb;public//•1**1*•1*•1*•!*•!*•1*intgetb{returnb;};classA2publicA1intC;public voidshow/I********4********);voidmainA2a
8.
3.7cout«a.geta«endl cout«a.getb«endl a.show;.使用VC++
6.打开源程序文件
3.cpp其中类TC用于把文件输出到屏幕,然后进行文件的分割分割的方法如下第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分此程序将in.txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件outl.txt和out
2.txt中其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整⑴从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环请在注释1后添加适当的语句⑵把获得的输入文件的内容存储到bur中,并且用len记录下文件的长度请在注释2后添加适当的语句⑶将输入文件的后一半内容存储在第二个文件中,请在注释3后添加适当的语句⑷使用文件流对象打开输入文件in.txt请在注释4后添加适当的语句注意增加代码或者修改代码的位置已经用符号表示出来请不要修改其他的程序代码试题程序#includefstream.h#includestdlib.hclassTCpublic TCchar:{:fileNamelen=O;fstreaminfile;infile.openfileNameiosin;charch;/ff*7*I・[•・[•whilecout«ch;infileclose;voidsplitfstreamoutfilel;fstreamoutfile2;outfilel.openoutl.txt”iosout;outfile
2.openout
2.txtiosout;inti=0fori=0;ilen/2;i++do//•*1«/本本本本本本本本3本本本木木本本本whilei!=len;outfilel.close;outfile
2.close;prwate intlen;charbuf[1024J;};voidmainII********4********TCobj;obj.split;return;
六、
3.综合应用题(2题).使用VC6打开考生文件夹下的工程MyProj
4.此工程包含一个源程序文件MyMain
4.cpp该程序将通过把类Distance定义为类Point的A.若在重定义虚函数时使用了virtual则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义父类的虚函数D.虚函数不能是static的.下列叙述中错误的是()A.一种数据的逻辑结构可以有多种存储结构B.数据的存储结构与数据的处理效率无关C.数据的存储结构与数据的处理效率密切相关D.数据的存储结构在计算机中所占的空间不一定是连续的.下列模板的声明中,正确是A.templateTB.templateclassT1T2C.templateclassT1classT2□.templateclassT1;classT2
二、单选题(13题)
11.算法的有穷性是指A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的友元类来实现计算两点之间距离的功能但程序中定义的类并不完整请按要求完成下列操作,把类的定义补充完整
①把类Distance定义为类Point的友元类请在注释“〃**1**”之后添加适当的语句
②定义类Point的构造函数,完成给私有数据成员x和y的赋值,并且两个参数的默认值都为Oo请在注释“〃**2**”之后添加适当的语句
③完成类Distance的成员函数DisPointpPointq的定义,并在其中计算点p、q之间的距离,并且返回结果假设两点之间的距离distance=sqrtp.x-q.x*p.x-q.x+p.y-q.y*p.y-q.y请在注释“〃**3**之后添加适当的语句源程序文件MyMain
4.cpp中的程序清单如下//MyMain
4.cpp#includeiostream#includecmathusingnamespacestd;classPointpublic://**]**//定义类Point的构造函数//**2**voidpintcout*x=xendl;coutny=yend1;Iprivate:floatxy;};classDistancepublic:floatDisPointpPointq;};floatDistance::DisPointpPointq〃**3**}一intmainPointpIOJOq2O2O;Distanced;coutd.Dispqendl;return0;
149.使用VC6打开考生文件夹下的工程MyProj6o此工程包含一个源程序文件MyMain
6.cppo在程序中,定义了一个Furniture类,Bed类和Sofa类是在Furniture类的基础上按公有继承的方式产生的派生类,Sleepersofa类是在Bed类和Sofa类的基础上按公有继承的方式产生的派生类请按要求完成下列操作,将类Date的定义补充完成
①Bed类是在Furniture类的基础上按公有继承的方式产生的派生类,为了使程序中的多重继承关系不出现二义性请在注释“//**1***之后添加适当的语句
②Sofa类是在Furniture类的基础上按公有继承的方式产生的派生类,为了使程序中的多重继承关系不出现二义性请在注释“〃**2**”之后添加适当的语句
③Sleepersofa类是在Bed类和Sofa类的基础上按公有继承的方式产生的派生类请在注释“〃**3**”之后添加适当的语句注意除在指定位置添加语句之外,请不要改动程序中的其他内容源程序文件MyMain
6.cpp清单如下;//MyMain
6.cpp#includeiostreamusingnamespacestd;classFurniturepublic Furniture{}voidsetweightintwweight=w;1intgetweightreturnweight;protected intweight;;//**1**classBeddefinitionpublic Bed{voidsleepcoutsleepingendl;〃**2**classSofadefinitionpublic Sofa{}voidwatchTVcoutwatchingTVendl;};〃***3***public Sleepersofa{}voidFoldoutcoutFoldoutthesofa
1.endl;};intmainSleepersofass;ss.setweight20;coutss.getweightendl;return0;参考答案l.B.A解析在C++中,成员函数可以是内联函数,也可以是非内联函数在类定义体内定义和实现的函数都是内联函数在类定义体外实现的函数可以通过在函数说明和定义上分别加上inline来表示该函数是内联函数,否则就不是内联函数.D解析在类A中有geta函数,在类B中也有geta函数,类C继承了类A和类B这样就产生了二义性,所以程序会出错.D解析软件需求规格说明书SRSSoftwareRequirementSpecification是需求分析阶段的最后成果,是软件开发中的重要文档之一它有以下几个方面的作用
①便于用户、开发人员进行理解和交流;
②反映出用户伺题的结构,可以作为软件开发工作的基础和依据;
③作为确认测试和验收的依据
5.B遍历是按照一定规则对树中全部结点逐一访问的方法二叉树可由根结点、左子树和右子树三个部分组成根据对根结点访问的先后顺序可将遍历方法分为先序遍历、中序遍历和后序遍历三种先序遍历首先访问根结点,再先序遍历左子树,最后先序遍历右子树,可见遍历是一个递归的过程求树的遍历这种问题的关键在于认清每棵子树的根结点的访问顺序题目给出了一棵树的先序遍历和中序遍历的结点顺序,先序遍历的第一个结点为整棵树的根结点,即根结点为A而在中序遍历的顺序中,结点A的前面还有DBGE四个结点,表示这四个结点构成以A为结点的二叉树的左子树,同理,中序遍历中A结点后面的CHF三个结点构成以A为结点的二叉树的右子树于是原来的对一棵二叉树的分析变为对该二叉树的左右子树的分析以左子树为例,左子树结点的先序遍历为BDEG中序遍历为DBGE该子树的根结点为BB结点的左子树为一个结点D右子树为以E为根结点,结点G是E的左孩子同理,可对CHF三个结点进行分析最后得到整棵树的结构后,按照后序遍历写出所有结点的顺序DGEBHFCAO.DDo【解析】本题考查break语句的使用break可以结束switch语句和for循环语旬,但是不能使用在条件判断语句内.A解析非成员函数重载的运算符的显示调用格式为加.operator@bb其中@是重载运算符号.D解析虚函数一定不能定义为静态的虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了virtual则该重定义函数不一定还是虚函数
9.BB【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的数据的存储结构与数据的处理效率密切相关.C解析本题考核模板的定义模板定义的类型参数表中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用在使用类模板时,必须将其实例化,即用实际的数据类型代替它.A算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止.AAo[解析]PAT*ad{3;该表达式表示一个指向类PAT的数组的指针,只是声明了该指针,而并没有进行实例化对象,因此该语句运行时并不会调用构造函数.C解析编译时的多态性是通过函数重载和模板体现的,运行时的多态性是通过虚函数体现的.AI
5.B数据库有三层模式结构,逻辑模式是数据的全局逻辑结构的描述外模式也称为子模式,是局部数据的逻辑结构描述,而内模式也称为存储模式,是数据库物理存储结构和存取方法的描述.AAo【解析】由主函数main入手,定义外部变量x和y调用函数addo因为xy为外部变量所以“intx20y5;”的赋值在add也是有效的,即add函数的运算结果为
25.A解析本题考查的是getline函数getline函数的原型为istream_typegetlinechar_type*sstreamsizenchar_typedelim;其功能是从当前输入位置开始提取字符存入s所指向的具有n个字节的字符空间中字符的提取与存储在遇到下列情况时停止
①已提取并存储了n-1个字符;
②到流尾,无字符可提取;
③下一个要提取的字符等于结束标志字符delimo因此,选项B、C、D都是正确的getline函数不仅可以用宋读取键盘输入的字符串,还可以用来读取文件等数据流,故选项A不正确.CCo【解析】编译时的多态性是通过函数重载和模板体现的,运行时的多态性是通过虚函数体现的.CCo【解析】针对递归调用的含义当n为2时有fibofiblfib2被调用,且fibOfibl时调用结束,即共3次.A解析外模式也称子模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导而出来的,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示.A
22.B一般函数进行调用时要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,即类似于宏
23.D解析本题考查软件工程中软件设计的概念和原理人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则⑴改进软件结构,提高模块独立性;通过模块的分解或合并,力求降低耦合提高内聚低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度⑵模块的规模应适中一个模块的规模不应过大,过大的模块往往是由于分解不够充分过小的模块开销大于有益操作,而且模块过多将使系统接口复杂因此过小的模块有时不值得单独存在⑶模块的功能应该可以预测,但也要防止模块功能过分局限如果模块包含的功能太多,则不能体现模块化设计的特点如果模块的功能过分的局限,使用范围就过分狭窄经过上述分析,本题的正确答案是选项D.逻辑设计逻辑设计解析本题考核数据库设计的4个主要阶段考生需要牢记数据库设计中的这4个阶段,并会区分不同阶段的功能其中需求分析就是分析用户的要求概念设计就是将需求分析得到的用户需求抽象为信息结构及概念模型的过程逻辑设计是在概念结构设计的基础上,将与数据库管理系统无关的ER图转换成以数据库管理系统的逻辑数据模型表示的逻辑模式物理设计就是为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程.TT解析定义成员函数需要模板参数声明,使函数具有通用的类型以便被替换.44解析本题主要考查C++中递归函数递归函数即自调用函数在函数体内部直接或间接的自己调用自己,即函数的嵌套调用是函数本身递归调用分为直接递归调用和间接递归调用两种形式本题程序为求解典型递归数列Fibonacci数列中任意项值的简化程序(主函数中的调用改成fibn即变成求解任意项值主函数通过调用fib函数,fib函数内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用主函数通过实参将值3赋给fib函数的形参n由于n=3满足if分支语句条件,因此函数进行递归调用,即计算fib2和Eb⑴的值;将2赋给fib函数的形参后,由于n=2不满足if分之语句条件,因此程序退出递归,返回2;将1赋给fib函数的形参后,函数同样返回2因此函数递归调用的最终结果为返回2+2=4即fib⑶=4程序最后输出值为
427.实例实例解析将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合所以,类是对象的抽象,对象则是其对应类的一个实例
28.投影投影解析专门的关系运算主要包括对单个关系进行垂直分解投影操作或水平分解选择操作和对多个关系的结合连接操作等
29.10001000解析本题考核弓I用作为函数参数的使用弓I用作为形参时,它实际上就是实参,函数对形参的访问和修改就是对实参的访问和修改,题中函数fun对形参的操作是自增2倍,所以经过函数调用后,实参的值自增2倍即输出
100030.00013l.mallocl1或mallocsizeofchar*1lmallocl1或mallocsizeofchar*11解析malloc函数的参数可以是一个具体的常数也可以是一个表达式在本题中,可以是mallocll也可以借助于sizeof运算符来表示
32.DerivedDerived解析本题考核对象指针的使用题中基类Base对D.算法只能被有限的用户使用.若PAT是一个类,则程序运行时,语句“PAT(*ad){3};调用PAT的构造函数的次数是()A.A.OB.lC.2D.
3.下列关于多态性的描述,错误的是()A.C++语言中的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态绑定.有如下程序#includeiostreamusingnamespacestd;classMonkey{public:Monkey{cout«M;Monkeycharn{cout«n;}-MonkeyO{couK^Y;}1;intmain{Monkeypl*p2;p2=newMonkeyX;deletep2;return0;运行这个程序的输出结果是A.MYXB.MYMYC.MXYD.MXYY象指针P用派生类Derived对象obj1来初始化那么通过对象指针p调用的who函数版本为基类Base中定义的版本,所以程序输出Derived
033.时间复杂度和空间复杂度时间复杂度和空间复杂度.需求分析需求分析解析需求分析的步骤是需求获取、需求分析、需求描述和需求验证.#.1应改为“ein.getlinestr120;”⑵应改为“whilestr[i]”3应改为“ifstr[i]=ast巾卜=2”【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline字符数组,字符个数,终止标志字符户所以第1处改为“cin.getlinestr120;第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“whilestr[i]”°第3处的巾]=a”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为4tifstr[i]=astr[i]=zo
37.1应改为catchchar*s⑵应改为“catehinti”3应改为catch…”【解析】本题中第1个标识前的异常抛出语句为“throw”error;L其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为uthrowint0;”其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号…表示它可以捕捉任何类型的异常信息,即修改为catch…”
38.1应改为catchchar*s”⑵应改为“catehinti”⑶应改为“catch…广【解析】本题中第1个标识前的异常抛出语句为“throwerror”;”其中的类型为字符串所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catchchars”是字符型的,所以第1处的语句修改为“catchchar*S”第2个标识前的异常抛出语句为“throwint0;,其中的类型为int对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行即第2处的语句修改为“catchinti”如果在catch子句中没有指定异常信息的类型,那么就用删节号…表示它可以捕捉任何类型的异常信息,即修改为“catch…”
39.l“voidmain”2fintm=0144;3“intn=OX25;”或“intn===0x25;【解析】本题主要考查了主函数定义及累同进制之间的转换,包括十进制到八进制,十进制到十六进制主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144卡进制的37对应十六进制的25因此2和3应分别改成“intm=0144;”,“intn=0x25;”或“intn=0x25;.1应改为“TCTC”\n⑵应改为voidTC::display”\n3应改为“TC~TC”\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“、作用域运算符用采表示某个成员属于哪个类,使用格式为“类名成员函数参数函数,因此第1处应改为“TCTC”,默认构造函数没有参数由第2处“TC=display”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void因此第2处的语句应改为“voidTC::display由第3处的语句=212”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC〜TC”.1应改为TCobjll;\n⑵应改为“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处与
3.$«1的11加瑁00;”语句中的1\为类并不是对象这里应该使用定义的对象,即obj2所以将语句修改为“obj
2.SetNumberlOO;.1应改为usingnamespacestd;⑵应改为outl.opennl.txt”,iosbinaryIios叩p;”3应改为“outl.puts[i];【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“outl.opennl.txtbinaryIapp;”语句缺少类ios即第2处的语句修改为out
1.open*l.txt,iosbinaryIios叩p;第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为Uout
1.puts[i];.1应改为“ein.getlinestr120;\n⑵应改为whilestr[i]°\n⑶应改为“ifstr[i]=astr[i]v=2”\n【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为-in.getline字符数组,字符个数终止标志字符字所以第1处改为“cin.getlinestr120;二第2处的“whilestr”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换所以应该修改为“while®巾]”第3处的“ifst币]=a»语句是判断字符str[i]是否为小写字符而现有的语句只是判断字符是否大于a但是小写字符应该是a到2所以修改为“ifstr[i]=astr[i]=zvo.1应改为TCobjl⑴;2应改为Objl.SetNumberlO;3应改为“0bj
2.SelNumberlOO;【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl根据TC类构造函数的定义TCinli存在整型参数,并且题目要求第一个输出结果两1所以补全参数1即第1处的“TCobjll;工第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值在C++中成员函数的使用形式应该是对象名.成员函数,所以修改为uobj
1.SetNumberlO;类是对象的抽象而对象是类的具体实例第3处“TC.SetNumberlOO;”语句中的TC为类,并不是对象,这里应该使用定义的对象,即bj2所以将语句修改为“obj
2.SetNumberlOO;.1应改为usingnamespacestd;\n2应改为“outl.openfl.txtiosbinary|iosapp;\n3应改为“outl.puts[i];\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std对于C++中引入标准命名空间的格式,缺少namespace所以第1处的语句修改为“usingnamespacestd;第2处,调用成员函数open中,输入、输出方式是在ios类中定义的PJfUuoutl.openl.txtbinary|app;”语句缺少类ios即第2处的语句修改为“outl.open.txt]iosbinary|iosapp;”第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“outl.puts[i];.1“Aintx{a=x;}26Alintxinty Ay{b=x;}”3“A2intxintyintz Alyz{c=x;}“44tcout«gcta«n«gctb«n«c«endl;【解析】本题第1处要求定义类A的构造函数,该构造函数有一个整型的参数x在构造函数中请将x赋值给数据成员a构造函数没有返回值类型,所以应填“Aintx{a=x;产第2处第3处根据继承中对象的初始化语法规则可知第4处要求调用基类成员函数,由于都是公有继承,ge-ta、getb都是自身类的公有函数,所以根据继承规则,在对象A2中,依然是公有的可以通过对象A2直接调用.l“while”应改为“whileinfile.getch”2应添加“bur[len++]=ch;bur[len]=ch;len++;⑶应添加“outfile2vvbu巾++];”或“outfile2vvbuf[i];i++;4“TCobj;”应改为“TCobiin.txt;【解析】本题考查了文件流的使用根据题意,第1处要获得一个字符,并判断是否到文件结尾,所以应使川get函数;第2处应将ch存入buf数组同时让len增1;第3处将buf中的字节输出给outfile2注意同时让i增1否则while循环将进入死循环;第4处TC只确一个带char*参数的构造函数,所以创建对象时必须使用构造参数,根据题意这个参数应该是“in.txt”
48.类Point的定义如下:\r\nclassPoint\r\n{\r\npublic:\r\nfriendclassDistance;\r\nPointfloata=0floatb=0\r\n{\r\nx=a;\r\ny=b;\r\n}\r\nvoidpint\r\n{\r\ncoutnx=nxend1;\r\ncouty=yend1;\r\n}\r\nprivate:\r\nfloatxy;\r\n};类Point的定义如下\r\nclassPoint\r\n{\r\npublic:\r\nfriendclassDistance;\r\nPointfloata=0floatb=0\r\n{\r\nx=a;\r\ny=b;\r\n}\r\nvoidpint\r\n{\r\ncoutnx=xendl;\r\ncouty=yendI;\r\n}\r\nprivate:\r\nfloatxy;\r\n};解析此道综合应用题主要考核友元类的定义与使用
①第1处是完成友元类的声明,根据友元类的声明格式已知此处可填入friendclassDistance;
②第2处是完成类Point的构造函数,此处还要注意类Point的构造函数中还应该有参数默认值此处应填入Pointfloata=0floatb=0{x=a;y=b}
③第3处是完成类Distance成员函数Dis的定义,函数Dis的功能是计算两点之间的距离根据题目给出的计算公式,已知第3处应填入floatresult;result=sqrtp.x-q.x*p.x-q.x+p.y-q.y*p.y-q.y;returnresult;
49..在下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.外模式B.内模式C.概念模式D.逻辑模式.下列函数的运行结果是#includeiostream.hintaddintaintb;voidmainexternintXy;cout«addXy«endl;}intx20y5;intaddintaintbints=a+b returns;A.25B.30C.20D.I
5.下列关于输入流类成员函数getline的描述中,错误的是A.该函数是用来读取键盘输入的字符串的B.该函数读取的字符串长度是受限制的C.该函数读取字符串时,遇到终止符便停止D.该函数读取字符串时,可以包含空格.下列关于多态性的描述,错误的是()A.C++语言中的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态绑定.计算斐波那契数列第n项的函数定义如下intfibintn{ifn==Oreturnl;elseifn==lretum2:elseretumfibn-1+fibn-2;若执行函数调用表达式fib
(2)函数fib被调用的次数是()A.lB.2C.3D.
4.数据视图的描述称为()A.A.外模式B.内模式C.概念模式D.存储模式.以下程序的执行结果为#includeiostream.hclassSample{intn;public:Sampleinti{n=i;}operator++{n++;}〃前缀重载运算符operator++int{n+=2;}〃后缀重载运算符voiddisp{coutn=nendl;}};voidmain{SampleA2B2;A++;++B;A.disp;A.disp;}A.n=4B.n=lC.n=3D.n=5n=3n=2n=4n=
6.为了取代c中带参数的宏,在C++中使用A.重载函数B.内联函数C.递归函数D.友元函数.在结构化程序设计中,模块划分的原则是A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦合度
三、
2.填空题12题.数据库的设计通常可以分为这样4个步骤需求分析、概念设计、[]和物理设计.请将下列模板类Data补充完整templatetypenameTclassData{public voidputTv{val=v;}get{returnval;〃返回数据成员val的值,返回类型不加转换private Tval;.有以下面程序#includeiostreamusingnamespacestd;longfibintnifn2returnfibn-1+fibn-2;elsereturn2;intmaincoutfib3endl;return0;则该程序的输出结果应该是【】.类是一个支持集成的抽象数据类型,而对象是类的【】.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】.下列程序的输出结果是o#includeiostreamusingnamespacestd;voidfunintrfrf*=2;intmainintnum=500;funnum;coutnumendl;return0;}.以下程序的执行结果是o#includeiostream.hvoidmainintx=5y=2;cout!y==x/2V;couty!=x%3°n;coutx0y0=;coutx!=y||x=yendl;}.用以下语句调用库函数malloc使字符指针st指向具有11个字节的动态存储空间,请填空st=char*[];。