版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C++)机试模拟试卷1(共9套)(共376题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共37题,每题1.0分,共37分。)1、设数据结构B=(D,R),其中D={a,b,c,d,e,f}R={(f,A),(d,B),(e,D),(c,e),(a,C)}该数据结构为()。A、线性结构B、循环队列C、循环链表D、非线性结构标准答案:A知识点解析:数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了D中各数据元素之间的前后件关系,通常记为R。即一个数据结构可以表示成B=(D,R)。其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设a与b是D中的两个数据,则二元组(a,b)表示a是b的前件,b是a的后件。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。根据上述理论,本题中f为根结点,每个结点有一个前件和一个后件,符合线性结构的定义。故本题答案为A选项。2、下列叙述中错误的是()。A、循环队列空的条件是队头指针与队尾指针相同B、若二叉树没有叶子结点,则为空二叉树C、带链栈的栈底指针是随栈的操作而动态变化的D、若带链队列中只有一个元素,则队头指针与队尾指针必定相同标准答案:A知识点解析:在循环队列中,当front=rear时,不能确定是队列满还是队列空。在实际使用循环队列时,为了能区分队列满还是队列空,通常还需要增加一个标志s。当s=0时表示队列空,当s=1且front=rear时表示队列满。故本题答案为A选项。3、某带链栈的初始状态为top=bottom=NULL,经过一系列正常的入栈与退栈操作后,top=bottom=20。该栈中的元素个数为()。A、1B、0C、20D、不确定标准答案:A知识点解析:带链的栈是具有栈属性的链表。线性链表的存储单元是不连续的,为把存储空间中一些离散的空闲存储结点利用起来,把所有空闲的结点组织成一个带链的栈,称为可利用栈。线性链表执行删除操作运算时,被删除的结点可以“回收”到可利用栈,对应于可利用栈的入栈运算,线性链表执行插入运算时,需要一个新的结点,可以在可利用栈中取栈顶结点,对应于可利用栈的退栈运算。可利用栈的入栈运算和退栈运算只需要改动top指针即可。当top=bottom=20时链栈中的元素个数为1。故本题答案为A选项。4、设一棵度为3的树,其中度为2,1,0的结点数分别为3,1,6。该树中度为3的结点数为()。A、1B、2C、3D、不可能有这样的树标准答案:A知识点解析:根据题目有6个度为0的结点:因此最后度为3的结点有1个:故本题答案为A选项。5、下面描述错误的是()。A、模块的独立性与模块的信息隐蔽和局部化无关B、内聚性和耦合性是模块独立程度的定性度量标准C、一个模块的内聚性越高则该模块的独立性越强D、一个模块的耦合性越高则该模块的独立性越弱标准答案:A知识点解析:模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模块的独立性是指软件模块的编写和修改应使其具有独立功能,且与其他模块的关联尽可能少。故本题答案为A选项。6、下面属于黑盒测试方法的是()。A、错误推测法B、基本路径测试C、判定覆盖D、条件覆盖标准答案:A知识点解析:黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖)、基本路径测试等。故本题答案为A选项。7、下面模型中为概念模型的是()。A、实体一联系模型B、层次模型C、关系模型D、网状模型标准答案:A知识点解析:数据模型按照不同的应用层次分为3种类型:概念数据模型、逻辑数据模型、物理数据模型。概念数据模型有实体联系模型(E-R模型)、面向对象模型及谓词模型;逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。故本题答案为A选项。8、学生关系模式中有D(D#,Dn,D1,DAddr)(其属性分别为系编号、系名称、系主任和系地址)和S(S#,Sn,SG,Date,Maj,D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号)两个关系,关系S的主键(码)是S#,关系S的外键(码)是()。A、D#B、MajC、DlD、Dn标准答案:A知识点解析:在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。表A中的某属性集是某表B的键,则称该属性集为A的外键或外码。故本题答案为A选项。9、关系的实体完整性要求关系中不能为空的属性是()。A、主键属性B、外键属性C、全部属性D、候选键属性标准答案:A知识点解析:关系模型中可以有3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体完整性约束是指若属性M是关系的主键,则属性M中的属性值不能为空值。故本题答案为A选项。10、学生选修课程的关系模式为SC(S#,Sn,Sd,Sa,C#,G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课)。关系模式中包含对主属性部分依赖的是()。A、S#→SdB、(S#,C#)→GC、C#→CnD、C#→P#标准答案:A知识点解析:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。关系模式S中,S#→Sd。Dc不完全依赖于S#且S#为主属性。故本题答案为A选项。11、已知类X中一个成员函数的原型声明为“voidCopy(X&r);”,则下列选项中。解释正确的是()。A、r为指向类X的指针B、r的地址值赋值给了变量CopyC、变量X与r按位与的结果作为函数Copy的参数D、r是类X的对象引用,用来作为函数Copy的形参标准答案:D知识点解析:函数Copy()的参数是一个引用类型,引用的是类X的对象,本题答案为D。12、下列语句中能正确定义变量的是()。A、constint*pNULL;B、constinty==99;C、constintx=0;D、constintz:100;标准答案:C知识点解析:const关键字用来定义常量,定义的同时必须完成初始化,而初始化需要使用赋值运算符指定初值,选项A没有初始化,错误;选项B使用关系运算符进行赋值运算,错误;选项D不是初始化语句,错误;选项C定义整型变量x为常量,值为0,正确,本题答案为C。13、有如下程序:#includeusingnamespacestd;intmain(){intsum=0;for(inti=1;i<4;i++){for(intj=i;j<4;j++)sum+=j;}cout<A、15B、17C、16D、14标准答案:D知识点解析:题意程序中sum初值为0,两个嵌套的for循环将循环体中i的当前值累加到sum中,其中外层for循环中,i取值为l时,内嵌for循环的j取值为1,2,3,slim累加6;当i取值为2时,j取值为2,3,sum累加5;当i取值为3时,i取值为3,sum累加3;综上for循环执行结束后,sum的值为6+5+3=14,本题答案为D。14、下列语句中,能够进行正确初始化的是()。A、charstr="abcde";B、char*str="abcde";C、charstr[4]="abcde";D、charstr[5]="abcde";标准答案:B知识点解析:选项A中,str是一个字符变量,不能用一个字符串初始化,错误;选项B中str是一个字符指针,使用字符串的首地址初始化,正确;选项C中str是一个字符数组,数组长度为4个字节,初始化的字符串有6个字符(包括结尾的空字符),长度不够,错误;选项D中str是一个字符数组,数组长度为5个字节,初始化的字符串有6个字符(包括结尾的空字符),长度不够,错误;本题答案为B。15、有如下程序段:#includeusingnamespacestd;inti=1;intj=4;intmain(){inti=5;j+=i;cout<A、14B、95C、59D、55标准答案:C知识点解析:题意程序中main()函数外的j和j是全局变量,初值分别是1和4;main()函数内部定义一个局部变量i,初值为5,所以在main()函数中,局部变量i会屏蔽全局变量i,输出i的值为5;main()函数内部的j使用的是全局变量j,将j的值累加局部变量i,并重新赋给j,得到j的值为9,输出j的值是9,所以程序输出结果为:59,本题答案为C。16、下列关于运算符重载的叙述中,错误的是()。A、重载运算符时能够改变运算符原有的优先级B、有些运算符不能作为普通函数重载C、重载运算符时不能改变运算符原有的操作数个数D、加法运算符重载为成员函数时形参表只有一个参数标准答案:A知识点解析:C++中,运算符重载的规则有:重载不能改变运算符的优先级,选项A错误;赋值运算符=、下标运算符[]、调用运算符()、成员访问箭头运算符一>等必须重载为成员函数,不能作为普通函数重载,选项B正确;重载不能改变运算符运算对象(操作数)的个数,选项C正确;加法运算符有两个操作数,作为成员函数重载时,第一操作数是调用对象本身,所以形参表只有一个操作数,选项D正确;本题答案为A。17、下列运算符函数中肯定不属于类Can的成员函数的是()。A、intoperator一(Can,Can);B、Canoperator一(double);C、intoperator一(Can);D、Canoperator一(int);标准答案:A知识点解析:运算符一至多有2个操作数,如果作为成员函数重载,那么形参表至多只有一个操作数,选项A中形参表有2个操作数,所以选项A一定不属于类can的成员函数,选项B、C、D都可能是cafl的成员函数,本题答案为A。18、下列因素中,对C++编译器区分重载函数无任何意义的是()。A、常成员函数关键字constB、返回值类型C、参数类型D、参数个数标准答案:B知识点解析:C++中,两个函数是重载函数,必须具有相同的名字,且形参表或const属性不同,选项A、C、D都可以区分;函数不能仅仅基于不同的返回类型而实现重载,选项B不能区分,本题答案为B。19、有如下程序:#includeusingnamespacestd;classDate{public:Date(inty=2014,intm=9,intd=9):year(y),month(m),day(d){}________(ostream&stream,Date&ddd){//运算符<<的定义stream<A、istream&operator<<B、ostream&operator<<C、friendistream&operator<<D、friendostream&operator<<标准答案:D知识点解析:题意中Date类重载了插入运算符<<,其中第一个参数是输出流对象的形参引用,第二个参数是Date类对象的引用;由重载函数的返回值可知,返回类型也是输出流对象的引用,选项A、C错误;另外由于main()函数中调用重载的插入运算符时:cout<20、已知函数func的原型为intfunc(int,int);则下列选项中,不能作为它的重载函数原型的是()。A、boolfunc(int,int,b001);B、voidfunc(inta,intb);C、intfunc(int,char);D、floatfunc(double,int);标准答案:B知识点解析:C++中,两个函数是重载函数,必须具有相同的名字,且形参表或const属性不同,其中形参表不同包括形参的类型不同或形参的数量不同;选项A中参数个数不同,是重载函数;选项C中参数类型不同,是重载函数;选项D中参数类型不同,是重载函数;函数不能仅仅基于不同的返回类型而实现重载,选项B仅仅返回类型不同,不是重载函数,本题答案为B。21、已知表达式++x中的“++”是作为成员函数重载的运算符,则与++x等效的运算符函数调用形式为()。A、x.operator++(1)B、operator++(x)C、x.operator++()D、x.operator++(x)标准答案:C知识点解析:增量运算符++有前缀自增运算符和后缀自增运算符两种,在重载该运算符时,由于他们的形参数目和类型都相同,为了可以区分是前缀运算符还是后缀运算符,通常将后缀运算符函数增加一个额外的int型形参,使用后缀运算符时,编译器提供0作为这个形参的实参,所以在调用前缀自增运算符时,使用对象显示的调用x.opemtor++(),调用后缀自增运算符时,显示的调用x.operator++(0),本题答案为C。22、有如下程序:#includeusingnamespacestd;intfl(intx,inty=5){returnx+y;}intn(doublex){returnx;}intmain(){inta=3;doubleb=2.5;cout<A、5B、6C、10D、11标准答案:C知识点解析:题意中两个f1()函数是重载函数,其中第一个f1()函数有两个整型形参x,y,其中y有默认值5,函数返回值x+y;第二个fl()函数有一个double类型形参x,再将x转换为整型作为函数返回值;main()函数中,表达式fl(a)+fl(b)两次调用fl(),fl(a)由于实参a是整型变量,所以会调用第一个fl()函数,其中形参x的值为a,y的值为5,返回值为a+5=8;fl(b)由于实参b是double类型,所以调用第二个fl()函数,返回值为2;所以程序运行结果为8+2=10,答案为C。23、有如下类定义:classMyClass{public:MyClass(intd=0):val(d)+{}_________//运算符函数+的声明private:intval;};若要使语句序列MyClassX(2),y(4),z;z=7+y:y=x+3:能够正常运行,横线处的声明语句应为()。A、friendMyClassoperator+(MyClass,MyClass);B、friendMyClassoperator+(MyClass&,MyClass&);C、friendMyClassoperator+(MyClass,MyClass&);D、friendMyClassoperator+(MyClass&,MyClass);标准答案:A知识点解析:程序中MYClass类给出一个默认构造函数,形参d是整数类型,默认值为0,在成员初始化列表中使用形参d初始化val成员;语句序列中两个表达式:7+y和x+3说明加法运算符函数的两个操作数可以是整型,也可以是MyClass类型,如果是整型的话,需要使用默认构造函数将整数类型隐式转换成临时的MyClass类对象,此时赋给运算符函数时,就不可以使用引用类型了,所以选项B、C、D都是错误的,选项A是正确的,选项A中由于两个操作数都是在形参列表,所以只能将运算符函数定义为友元函数,而不能定义为成员函数,本题答案为A。24、已知函数func的原型为intrune(int,int);则下列选项中,不能作为它的重载函数原型的是()。A、boolfunc(int,int,char);B、intfunc(int,char);C、floatfunc(inta,int);D、doublefunc(double,int);标准答案:C知识点解析:C++中,两个函数是重载函数,必须具有相同的名字,且形参表或const属性不同,其中形参表不同又可以分为形参个数不同(例如选项A)或者形参类型不同(例如选项B、D),所以选项A、B、D都可以作为重载函数原型;函数不能仅仅基于不同的返回类型而实现重载,选项C不能作为重载函数原型,本题答案为C。25、已知表达式++x中的“++”是作为成员函数重载的运算符,则与++x等效的运算符函数调用形式为()。A、x.operator++(1)B、operator++(x)C、x.operator++(x,1)D、x.operator++()标准答案:D知识点解析:增量运算符++有前缀自增运算符和后缀自增运算符两种,在重载该运算符时,由于他们的形参数目和类型都相同,为了可以区分是前缀运算符还是后缀运算符,通常将后缀运算符函数增加一个额外的int型形参,使用后缀运算符时,编译器提供0作为这个形参的实参,所以在调用前缀自增运算符时,使用对象显示的调用x.operator++(),调用后缀自增运算符时,显示的调用x.operator++(0),本题答案为D。26、计算数列第n项的函数定义如下:intfa(intn){if(n==1)return1;elsereturn3*fa(n一1)+2;若执行函数调用表达式fa(4)时,返回的函数值为()。A、53B、17C、23D、49标准答案:A知识点解析:题意fa()函数是一个递归函数,当n取值不等于1时,函数递归调用自身,返回值为3*fa(n-1)+2;当n取值为1时,函数返回值为1;所以fa(4)展开,等价于3*fa(3)+2,等价于3*(3*fa(2)+2)+2,等价于3*(3*(3*fa(1)+2)+2)+2,等价于3*(3*(3*1+2)+2)+2,也就等价于:53,本题答案为A。27、计算斐波那契数列第n项的函数定义如下:intfib(intn)if(n==0)return1;elseif(n==1)return2:elsereturnfib(n-1)+fib(n-2);}执行调用表达式fib(2),则函数fib被调用的次数是()。A、1B、2C、3D、4标准答案:C知识点解析:题意fib()函数是一个递归函数,当n等于0时,函数返回0;当n等于1时,函数返回1;当n大于1时,函数递归调用自身,返回值为fib(n—1)+fib(n一2);fib(2)调用一次函数,展开后等价于fib(1)+fib(0),又调用了2次,等价于1+0=1,总共调用3次fib()函数,本题答案为C。28、有如下程序:#includeusingnamespacestd;doubleadd(doublea,doubleb,doublec=1){returna+b+c:}intmain(){intresult=add(2,3);cout<A、3B、5C、6D、编译出错标准答案:C知识点解析:add()函数有三个double类型的形参a、b、c,其中c有默认值1,当调用函数形式为:add(2,3)时,形参a的值为2,b的值为3,c的值为默认值l,函数返回2+3+1=6,所以main()函数中,result值为6,输出6,本题答案为C。29、下列关于多个成员对象构造函数调用顺序的叙述中,正确的是()。A、与成员对象在类中声明的顺序相同B、与成员对象的析构函数的调用顺序相同C、与成员对象在初始化列表中的初始化顺序相同D、与成员对象在构造函数体中被调用的顺序相同标准答案:A知识点解析:C++中,类的构造函数初始化列表仅仅指定用于初始化成员的值,并不指定这些初始化执行的次序,成员被初始化的次序是定义成员的次序,所以成员对象在初始化时,构造函数的调用次序是这些成员的在类中的声明次序,选项A正确,本题答案为A。30、有如下类定义和对象定义:classA{public:A():data(0){}A(intx):data(x){}~A(){}intGetData()const{returndata;}voidSetData(intn){data=n;}private:intdata:};constAa(5);Ab(8);下列函数调用中错误的是()。A、a.GetData();B、a.SetData(10);C、b.GetData();D、b.SetData(10);标准答案:B知识点解析:常对象是指对象的所有成员的值都不能被修改,常成员函数是指只能引用本类的数据成员,而不能修改它们的成员函数;常成员函数可以被常对象调用,也可以被普通对象调用,而普通成员函数只能被普通对象调用,不能被常对象调用,题意中对象a是常对象,b是普通对象,SetData()是普通成员函数,GetData()是常成员函数,所以选项B中通过常对象a调用普通成员函数SetData()是错误的,选项A、C、D都正确;本题答案为B。31、在C++中,编译系统自动为一个类生成默认构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:C++中,一个类只要定义一个构造函数,编译器都不会再生成默认构造函数,也就是说只有一个类没有定义任何构造函数时,编译器才会在需要的时候自动生成一个默认构造函数.本题答案为C。32、下列关于构造函数的叙述中,错误的是()。A、构造函数在创建类对象时自动执行B、构造函数要负责对所有数据成员进行初始化C、可以为构造函数的参数设置默认值D、如果没有声明任何构造函数,则该类的构造函数有2个标准答案:B知识点解析:C++中,类的构造函数是在创建类对象时自动调用执行,选项A正确;在构造函数的初始化列表中可以对数据成员进行初始化,对于基本类型或有默认构造函数的类成员对象,可以不进行初始化,系统自动完成初始化值,选项B错误;构造函数的-参数可以有默认值,选项C正确;如果没有声明任何构造函数,那么该类通常会在需要的时候自动生成默认构造函数和复制构造函数,选项D正确,本题答案为B。33、下列关于构造函数的叙述中,正确的是()。A、每个类中都有一个复制构造函数B、类成员的初始化在构造函数体中进行C、创建对象时由用户负责调用构造函数D、默认构造函数是指参数表为空的构造函数标准答案:A知识点解析:C++中,类成员都是在构造函数的初始化列表中完成初始化的,在函数体内对类成员进行赋值,是在初始化完成之后,选项B错误;类的构造函数是在创建类对象时由系统自动调用执行,选项C错误;参数为空的构造函数属于默认构造函数,但有参数且参数都有默认值的构造函数也属于默认构造函数,选项D错误;如果没有声明任何构造函数,那么该类通常会在需要的时候自动生成默认构造函数和复制构造函数,所以每个类都有复制构造函数,选项A正确;本题答案为A。34、下列关于类成员的叙述中,正确的是()。A、友元函数是类的成员函数B、类成员的默认访问权限是私有的C、类的成员函数都是内联函数D、类成员函数必须声明为公有的标准答案:B知识点解析:友元函数是该函数可以访问对应类的非公有成员,它本身不属于类的成员,选项A错误;对于没有指定访问权限的成员,默认访问权限是私有的,选项B正确;在类定义体内部实现的成员函数属于内联函数,在类定义体外实现的不属于内联函数,选项C错误;类的成员函数可以是private、protected或public,选项D错误;本题答案为B。35、下列关于this指针的叙述中,正确的是()。A、类的成员函数都有this指针B、类的友元函数都有this指针C、类的非静态成员函数具有this指针D、任何与类相关的函数都有this指针标准答案:C知识点解析:友元函数不属于类的成员,没有this指针,选项B错误;静态成员函数不属于任何类对象,它独立于类的任意对象而存在,由所有类对象所共享,它也没有this指针,选项A、D错误;只有类的非静态成员函数才有this指针,选项C正确;本题答案为C。36、有如下程序:#includeusingnamespacestd;classclock{public:clock():seconds(0){};clock&operator++(){this->seconds++;return*this;}voiddisplay(){cout<seconds<<’’;}private:intseconds;};intmain(){clockc;++c;c.display();(++(++e)).display();c.display();return0;}运行后的输出结果是()。A、132B、133C、123D、122标准答案:B知识点解析:main()函数中首先定义clock类对象c,使用默认构造函数,初始化c的成员seconds为0;然后调用重载的增量运算符函数,将c的成员seeonds自增1,此时c.seconds的值为1;再调用display()函数输出c.seconds,结果为1;接下来连续两次调用增量运算符函数,将c.seconds增加2,此时c.seconds的值为3,再调用display()函数输出3,最后再次调用display()函数输出3,综上运行结果为:133;本题答案为B。37、下列关于this指针的叙述中,错误的是()。A、this指针只能在类的非静态成员函数中使用B、this指针存储着对象的地址C、this指针不需要显式定义D、在构造函数中不能使用this指针标准答案:D知识点解析:C++中,静态成员函数不属于任何类对象,它独立于类的任意对象而存在,由所有类对象所共享,它没有this指针,只有类的非静态成员函数才有this指针,选项A正确;this指针存储着调用对象的地址,选项B正确;成员函数不能定义this指针,它是由编译器隐含定义的,选项C正确;在构造函数中对象还没有完成生成,但这并不意味着对象什么都没有,所以构造函数中也有this指针,通常尽量避免在构造函数中使用this指针,选项D错误;本题答案为D。二、基本操作题(本题共1题,每题1.0分,共1分。)38、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:Name:SmithAge:21ID:99999CourseNum:12Record:970注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#includeusingnamespacestd;classStudentlnfo{protected://ERROR**********found**********charName;intAge;intID;intCourseNum;floatRecord;public:Studentlnfo(char*nanle,intAge,intID,intcourseNum,floatrecord);//FRROR**********found**********void~Studentlnfo(){}floatAverageRecord(){returnRecord/CourseNum;}voidshow()const{cout<<"Name:"<ID=ID;CourseNum=courseNum;Record=record;}intmain(){Studentlnfost("Smith",21,99999,12,970);st.show();return0;}标准答案:(1)char*Name;(2)~Studentlnfo(){}(3)Studentlnfo::Studentlnfo(char*name,intage,intID,intcourseNam,floatrecord)知识点解析:(1)主要考查考生对动态数组的掌握,由题目可知Name应该指向一个动态数组,而不是一个有效char型字符,因此要定义成char型指针。(2)主要考查考生对析构函数的掌握,析构函数不需要函数返回类型,应把void去掉。(3)主要考查考生对构造函数定义的掌握,构造函数也要使用作用域符号“::”。三、简单应用题(本题共1题,每题1.0分,共1分。)39、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个源程序文件main.cpp,其中有“房间”类Room及其派生出的“办公室”类Office的定义,还有主函数main的定义。请在程序中“//****found****”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:办公室房间号:308办公室长度:5.6办公室宽度:4.8办公室面积:26.88办公室所属部门:会计科注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#includeusingnamespacestd;classRoom{//“房间”类introom_no;//房间号doublelength;//房间长度(m)doublewidth;//房间宽度(m)public:Room(intthe_room_no,doublethe_length,doublethe_width):room_no(the_loom_no),length(the_length),width(the_width){}inttheRoomNo()const{returnroom_no;}//返回房间号doubletheLength()const{returnlength;}//返回房间长度doubletheWidth()const{returnwidth;}//返回房间宽度//**********found**********doubletheArea()const{__________}//返回房间面积(矩形面积)};classOffice:publicRoom{//“办公室”类char*depart;//所属部门public:Office(intthe_room_no,doublethe_length,doublethe_width,constchar*the_depart)//**********found**********::____________{depart=newchar[strlen(the_depart)+1];//**********found**********strcpy(________);}~Office(){delete[]depart;}constchar*theDepartment()const{returndepart;}//返回所属部门};intmain(){//**********found**********Office__________;cout<<"办公室房间号:"<标准答案:(1)returnlength*width;(2)Room(the_room_no,the_length,the_width)(3)depart,the_depart(4)an_office(308,5.6,4.8,"会计科")知识点解析:(1)主要考查考生对成员函数的掌握,题目要求返回房间面积(矩形面积)。由此可知空格部分要填写的是一个return语句,返回房间面积,也就是length*width,因此可以得出程序returnlength*width;。(2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数要使用成员列表初始法先对基类进行初始化。(3)考查strcpy函数,由前一条语句“depart=newchar[strlen(the_depart)+1];”可知,程序给depart分配了长度为the_depart串长加1的空间,因此要复制字符串the_depart串到depart,直接填写“strcpy(depart,the_depart)”即可。(4)主要考查考生对类的掌握,题目要求输出的结果为:办公室房间号:308办公室长度:5.6办公室宽度:4.8办公室面积:26.88办公室所属部门:会计科由Office类的构造函数可知要定义的一个Office类的对象为an_office(308,5.6,4.8,"会计科")。四、综合应用题(本题共1题,每题1.0分,共1分。)40、请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:两个数据表:1,2,3,4,5,63,4,5,6,7,8两个数据表之和:4,6,8,10,12,14要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//DataList.h#includeusingwpacestd;classDataListf//数据表类intlen;doubled;public:DataList(intlen,doubledata[]=NULL);DataList(DataList&data);intlength()const{returnlen;}doublegetElement(inti)const{returnd[i];}DataListoperator+(constDataList&list)const;//两个数据表求和voidshow()const;//显示数据表};voidwriteToFile(char*,constDataList&);//main.clyp#include"DataList.h"Datalist::DatRl.ist(intlen,doubledata[]):len(1en){d=newdouble[len];for(inti=0;i标准答案:for(imi=0;i知识点解析:主要考查考生对重载运算符的掌握,题目要求对两个数据表求和。程序已经定义了动态数组dd,并已经分配好了空间,接下来只要运用循环语句完成元素相加并进行赋值即可。国家二级(C++)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。2、下列叙述中正确的是()。A、栈是"先进先出"的线性表B、队列是"先进后出"的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:栈是先进后出的线性表,所以A)错误;队列是先进先出的线性表,所以B)错误;循环队列是线性结构的线性表,所以C)错误。3、执行下列语句段后,输出字符"*"的个数是()。for(inti=50;i>1;i-=2)cout<<′*′;A、24B、25C、26D、50标准答案:B知识点解析:本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么只有50到2之间的偶数才能输出"*",所以总共输出25次。4、有如下类定义:classMyClass{intvalue;public:MyClass(intn):value(n){}intgetValue()const{returnvalue;}};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:B知识点解析:本题考查类的默认构造函数和自定义的构造函数。本题中MyClass(intn):value(n){}为自定义的构造函数,加上默认构造函数,一共有2个构造函数。5、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()A、16B、10C、6D、4标准答案:A知识点解析:根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中度为2的结点是5-1=4个,所以度为1的结点的个数是25-5-4=16个。6、通过运算符重载,可以改变运算符原有的A、优先级B、结合性C、操作数类型D、操作数个数标准答案:C知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为C。7、有如下程序:#include#includeusingnamespacestd;classMyBag{public:friendintNancyShow(MyBag&bag);MyBag(stringbr="ABC"):brand(br){}private:stringbrand;};intNancyShow(MyBag&bag){if(bag.brand!="Coach")return1;elsereturn0;}intmain(){intcount=0;MyBagarrays[3]={MyBag("CityLife"),MyBag("Coach")};for(inti=0;i<3;i++)count+=NancyShow(arrays[i]);cout<A、0B、1C、2D、3标准答案:C知识点解析:本题考查构造函数,可以看出本题中是要统计对象数组arrays中有多少个brand不为的Coach元素,定义的对象数组中有两个不是Coach元素,所以答案为2,C选项正确。8、构成计算机软件的是A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。9、若要在Viz类中将*重载为一元运算符,下列重载函数声明中肯定有错的是A、Vizoperator*();B、Vizoperator*(Viz);C、intoperator*(Viz);D、Vizoperator*(Viz,Viz);标准答案:D知识点解析:本题中将*重载为一元运算符,所以只有一个操作数,而D选项有两个操作数,所以D选项错误。10、有如下类定义:classPoint{public:voidSetX(intxx){x=xx;}voidSetY(intyy){y=yy;}private:intx,y;};classCircle:publicPoint{public:intGetRadius(){returnradius;}private:voidSetRadius(intr){radius=r;}intradius;friendvoidshow();};在派生类Circle中函数show()可访问的成员的个数为A、1B、3C、5D、7标准答案:C知识点解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类,基类的私有成员不可访问,派生类的友元函数可以访问本类的所以成员以及基类的公用成员,所以可以访问的成员为5个,其中基类2个,本类中3个,所以C选项正确。11、在数据库系统中,数据模型包括概念模型、逻辑模型和A、物理模型B、空间模型C、时间模型D、数据模型标准答案:A知识点解析:数据模型按照不同的应用层次分为3种类型:概念数据模型、逻辑数据模型、物理数据模型,故A选项正确。12、在公有继承的情况下,在派生类中能够访问的基类成员包括A、公有成员B、保护成员C、公有成员、保护成员和私有成员D、公有成员和保护成员标准答案:D知识点解析:在公有继承的情况下,基类中的私有成员对派生类不可见,公有成员和保护成员都保持自己的访问级别,派生类都可以访问,答案为D。13、已知主函数中通过如下语句序列实现对函数模板swap的实例调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的描述中,会导致上述语句序列发生编译错误的是A、模板形参表中有1个参数B、模板形参表中有2个参数C、模板形参表中有1个或2个参数D、模板形参表中没有任何参数标准答案:D知识点解析:函数模板swap有两个数组地址参数a,b,它们数组元素的类型相同;所以模板形参表中可以使用1个参数定义为int,来实例a,b的类型,也可以使用2个参数,分别实例a,b的类型;选项D错误,答案为D。14、A、(c,c,11,4)B、(c,c,11,4)C、(a,a,2,4)D、(a,a,2,4)和(e,e,6,1)标准答案:A知识点解析:从关系中找出满足给定条件的元组的操作称为选择,用表示。""为交运算,它由属于前者且属于后者的元组组成。题目为选出属于属性B,同时属性C大于4,并且属性D大于3的元组,结果为(c,c,11,4),应保留全部属性。故A选项正确。15、下列关于this指针的描述中,正确的是()。A、类的成员函数都有this指针B、类的友元函数都有this指针C、任何与类相关的函数都有this指针D、类的非静态成员函数都有this指针标准答案:D知识点解析:this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。16、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是A、fstreamB、istreamC、cstdlibD、iomanip标准答案:D知识点解析:C++中I/O流控制头文件是iomanip,它负责实现输入输出的各种格式控制;答案为D。17、有如下程序:#includeusingnamespacestd;voidfun(inti){cout<<"inti/";}voidfun(doubled){cout<<"doubled/";}voidfun(char*p){cout<<"char*p/";}intmain(){fun(0);return0;}进行编译、链接、运行的结果是A、编译出错,无法运行B、输出:inti/C、输出:inti/D、char*p/标准答案:B知识点解析:程序中有三个重载fun函数,形参类型分别为:int类型,double类型和char*类型,main函数中,调用fun函数,实参为0,编译器需要确定重载函数中的最佳匹配,虽然0可以隐式转换为double类型、char*类型,但是fun(0)可以和原型形参为int类型的函数精确匹配,所以将会调用原型为fun(int)的函数,输出inti/;答案为B。18、有如下类声明:classHow{intk;public:voidshow()const{cout<A、1B、2C、3D、4标准答案:B知识点解析:程序中类How没有定义任何构造函数,所以编译器需要自动生成一个默认构造函数和复制构造函数,答案为B。19、有下列语句,编号分别是1、2、3、4,chars1="abcde";//1chars2[]="abcde";//2chars3[4]="abcde";//3chars4[5]="abcde";//4其中错误的是A、2B、1,3C、1,3,4D、1,2,3,4标准答案:C知识点解析:字符串常量不能用来初始化字符变量,语句1错误;使用字符串常量初始化字符数组,系统自动根据初值个数确定数组长度,语句2正确;字符串常量"abcde"实际长度应该包括空字符’\0’,为6个字符,语句3、4语法错误;所以答案选C。20、在公有继承的情况下,允许派生类直接访问的基类成员包括()。A、公有成员B、公有成员和保护成员C、公有成员、保护成员和私有成员D、保护成员标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以本题答案为B。21、下列数据结构中,能够按照"先进后出"原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。22、若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。A、Data+(Data);B、Dataoperator+(Data);C、Data+operator(Data);D、operator+(Data,Data);标准答案:B知识点解析:根据重载加法运算符的格式,只有B选项正确。23、有如下程序:#include#includeusingnamespacestd;classInstrument{public:Instrument(stringt="乐器",stringn="无名"):type(t),name(n){}virtualstringGetType()const{return"乐器";}virtualstringGetName()const{return"无名";}protected:stringtype,name;};classPiano:publicInstrument{public:Piano(stringn,stringt="钢琴"):Instrument(t,n){}stringGetType()const{return"钢琴";}stringGetName()const{returnname;}};intmain(){Instrument*pi=newPiano("星空");cout<GetType()<<’-’<GetName();deletepi;return0;}运行时的输出结果是A、钢琴-星空B、钢琴-无名C、乐器-星空D、乐器-无名标准答案:A知识点解析:本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其中虚函数为GetType,当定义Instrument*pi=newPiano("星空")时,调用派生类的GetType函数,得到type为钢琴,name为星空,所以输出钢琴-星空。选项A正确。24、下列枚举类型的定义中,包含枚举值3的是A、enumtest{LEFT,UP,RIGHT,DOWN};B、enumtest{LEFT,UP=5,RIGHT,DOWN};C、enumtest{LEFT=-1,UP,RIGHT,DOWN};D、enumtest{LEFT,UP,RIGHT=6,DOWN};标准答案:A知识点解析:枚举常量的定义enum枚举类型名{常量1,常量2,常量3,.......};A选项包含的枚举值为0、1、2、3,B选项包含的枚举值为4、5、6、7,C选项包含的枚举值为-1、0、1、2,D选项包含的枚举值为4、5、6、7,所以A选项正确。25、下列有关继承和派生的表述中,正确的是A、作为虚基类的类不能被实例化B、派生类不能访问基类的保护成员C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:作为虚基类的类可以被实例化,派生类公用继承和保护继承基类,都可以访问基类的保护成员。如果派生类没有对虚函数重新定义,那么就调用基类的虚函数。所以C选项正确。26、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为A、219B、229C、230D、231标准答案:B知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229,答案为B。27、若要在Viz类中将*重载为一元运算符,下列重载函数声明中肯定有错的是A、Vizoperator*();B、Vizoperator*(Viz);C、intoperator*(Viz);D、Vizoperator*(Viz,Viz);标准答案:D知识点解析:本题中将*重载为一元运算符,所以只有一个操作数,而D选项有两个操作数,所以D选项错误。28、有如下程序:#include#includeusingnamespacestd;classFather{public:Father(strings):name(s){cout<<’F’;}~Father(){}private:stringname;};classMother{public:Mother(strings):name(s){cout<<’M’;}~Mother(){}private:stringname;};classChild:publicMother,publicFather{public:Child(strings1,strings2,strings3,inta):Father(s1),Mother(s2),name(s3),age(a){cout<<’C’;}~Child(){}private:stringname;intage;};intmain(){Childson("Zhang","Li","Ming",20);return0;}运行时的输出结果是A、CB、FMCC、MFCD、FMC20标准答案:C知识点解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数。所以本题中执行构造函数为先执行基类Mother的构造函数、然后执行基类Father的构造函数,再执行派生类的构造函数函数,所以输出MFC,答案C正确。29、下列字符中,可以出现在合法的C++标识符中的是A、:B、~C、&D、1标准答案:D知识点解析:C++的标识符由字母、数字和下划线组成,A、B、C错误,答案为D。30、有如下的类声明:#includeusingnamespacestd;classAA{public:virtualvoiddisp(){cout<<’A’;}};classBB:publicAA{public:voiddisp(){cout<<’B’;}};classCC:publicBB{public:virtualvoiddisp(){cout<<’C’;}};voidplot(AA&a){a.disp();}intmain(){BBbb;CCcc;BB&rb=cc;plot(bb);plot(cc);rb.disp();return0;}运行这个程序的输出是A、AACB、AABC、BCCD、BCB标准答案:C知识点解析:程序定义了类AA,成员函数disp()为虚函数;类BB公有继承AA,重新定义了disp()函数;类CC公有继承BB,同样重新定义了disp()函数;类BB中,虽然disp()未用virtual修饰,但是由虚函数性质可知,BB中的disp()函数仍然是虚函数;main()函数中,创建BB对象bb,CC对象cc,使用cc初始化BB类引用rb,然后调用plot函数;plot函数的形参是AA类的引用,通过AA类引用调用disp函数,满足多态性条件,将根据引用所指对象的类型来决定调用哪个disp函数;所以plot(bb)调用类BB中的disp函数,plot(cc)调用CC中的disp函数;输出分别为:"B"、"C";另外由于rb为BB类引用,所指对象是cc,所以运行rb.disp()时调用的是CC中的disp()函数,输出"C",综上,程序输出为:"BCC";答案为C。31、数据库中对概念模式内容进行说明的语言是A、数据定义语言B、数据操纵语言C、数据控制语言D、数据宿主型语言标准答案:A知识点解析:数据库管理系统为完成主要功能提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构建;数据操纵语言,该语言负责数据的操纵,包括查询与增、删、改等操作;数据控制语言,该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。故A选项正确。32、关于类定义,下列叙述中错误的是A、如果没有定义复制构造函数,编译器将生成一个复制构造函数B、如果没有定义复制构造函数,编译器将生成一个复制构造函数C、如果没有定义构造函数,编译器将生成一个默认的构造函数和一个复制构造函数D、如果已经定义了构造函数和复制构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:C++中,只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数,一个类哪怕只定义了一个构造函数,编译器也不会再生成默认构造函数,选项B错误,答案为B。33、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。34、有如下函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=1;func(x,y);则变量x和y的值分别是()。A、0和1B、1和1C、0和2D、1和2标准答案:C知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。本题中实参x为传值方式,所以x的值不会改变;y为引用形参,所以会改变。故本题答案为C。35、C++中的模板包括()。A、对象模板和函数模板B、对象模板和类模板C、函数模板和类模板D、变量模板和对象模板标准答案:C知识点解析:本题考查函数模板和类模板,所以答案为C。36、有如下程序段:inti=1;intj=4;intmain(){inti=8,j=i;cout<A、14B、81C、88D、18标准答案:C知识点解析:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量i,j,所以主函数中对全局变量重新赋值输出后为88,所以答案为C。37、有如下程序:#include#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){cout<<’N’;}TV(constTV&t):size(t.size){cout<<’C’;}~TV(){cout<<’D’;}voidPrint()const{cout<Print();deleteroom3;return0;}运行时的输出结果是A、NC54B、NCN54DC、NNN54DDDD、NCN54DDD标准答案:D知识点解析:本题考查构造函数相关知识,本题中定义一个对象room1,输出N,定义room2时输出C,定义room3时输出N,然后执行room3.Print时,输出54,最后执行三个析构函数输出DDD,所以答案为D。38、下列叙述中,错误的是A、false是一个逻辑型常量B、0是一个字符型常量C、1481是一个int常量D、1.732是一个double常量标准答案:B知识点解析:本题主要考查了常量的类型,其中B选项中"0"中由于是双引号,所以是字符串,单引号表示字符常量,所以B选项错误。39、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr="ABC"):brand(br){cout<A、MyBagarrays[2];B、MyBag*array[2]=newMyBag[2];C、MyBag*array[2]={MyBag("ABC"),MyBag("ABC")};D、MyBagarray[2]={newMyBag("ABC"),newMyBag("ABC")};标准答案:A知识点解析:本题考查构造函数的应用,题目中要求输出"ABCABC",那么就需要执行两次构造函数,只有A选择可以执行两次构造函数,所以A选项正确。40、设c1和c2是类MyClass的对象,若将前缀运算符"--"和运算符"/"作为类MyClass的友元函数重载,则表达式--c1/c2等价于A、operator/(c1.operator--(),c2)B、operator/(operator--(c1),c2)C、c1.operator--().operator/(c2)D、c2.operator/(operator--(c1))标准答案:B知识点解析:友元函数不是类的成员函数,所以友元函数的调用不需要使用类对象;另外运算符重载不改变运算符的优先级,所以先执行"--"运算符重载函数,之后执行"/"运算符重载函数,选项A、C、D错误,B正确,答案为B。二、基本操作题(本题共1题,每题1.0分,共1分。)41、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程pmj1,此工程中包含源程序文件main.cpp,其中有ElectricFan(“电风扇”)类和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:品牌:清风牌,电源:关,风速:0品牌:清风牌,电源:开,风速:3品牌:清风牌,电源:关,风速:0注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#includeusingnamespacestd;classElectricFan{//“电扇”类char*brand;intintensity;//风速:0一关机1一弱,2一中,3一强public:ElectricFan(constchar*thebrand):intensity(0){brand=newchar[strlen(thebrand)+1];strcpy(brand,thebrand);}~ElectricFan(){delete[]brand;}constchar。theBrand()const{returnbrand;}//返回电扇品牌inttheIntensity()const{returnintensity;}//返回风速//ERROR**********found**********boolisOn()const{returnintensity=0;}//返回电源开关状态//ERROR**********found**********voidturnOff()const{intensity=0;}//关电扇voidsetIntensity(intinten){//开电扇并设置风速if(inten>=1&&inten<=3)//ERROR**********found**********inten=intensity;}voidshow(){cout<<"品牌:"<标准答案:(1)boolisOn()const{returnintensity>=1;}//返回电源开关状态(2)voidturnOff(){intensity=0;}//关电扇(3)intensity=inten;知识点解析:(1)主要考查考生对bool函数的掌握情况,理清函数的逻辑关系。(2)主要考查考生对成员函数的掌握,理清函数的逻辑关系。函数中有intensity=0;参数值改变,因此函数不能为const。(3)主要考查考生对成员函数的掌握情况,intensity是类的私有成员。三、简单应用题(本题共1题,每题1.0分,共1分。)42、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中含有一个源程序文件proj2.epp,请将堆栈类的定义补充完整。使程序的输出结果为:Theelementofstackare:4321注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//proj2.cpp#includeusingnamespacestd;constintSize=5;classStack;C1assItem{public://********found********Item(constint&val):________{}//构造函数对item进行初始化private:intitem;Item*next;friendclassStack;};classStack{public:Stack():top(NULL){)~Stack();intPop();voidPush(constint&);private:Item*top;};Stack::~Stack(){Item*P=top,*q;while(p!=NULL){q=P->next;//********found********________;//释放p所指向的节点p=q;}}intStack::Pop(){Item*temp;intret;//********found********________;//使temp指向栈顶节点ret=top->item;top=top->next;deletetemp;returnret;}voidStack::Push(constint&val){Item*temp=newItem(val);//********found********________;//使新节点的next指针指向栈顶数据top=temp;}intmain(){Stacks;for(inti=1;i标准答案:(1)item(val)(2)delete[]p(3)temp=top(4)temp->next=top知识点解析:(1)主要考查构造函数,对私有成员进行初始化,即item(val)。(2)主要考查使用delete语句释放指针,一般格式为:delete[]+指针。(3)指向栈顶节点的是top指针,要使temp指向栈顶节点,故使用语句temp=top;。(4)指向栈顶节点的是top指针,要使新节点的next指针指向栈顶数据,故使用语句temp->next=top;。四、综合应用题(本题共1题,每题1.0分,共1分。)43、请使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿交通安全国旗下精彩讲话稿范文(5篇)
- 感谢老师学生演讲稿
- 小孩百日宴父母感谢致辞6篇
- 公众平台相关知识
- 银星养脑片治疗弥漫性轴索损伤瘀阻脑络证的临床研究
- 国家知识产权政策
- 电厂锅炉补给水和凝结水处理工艺设计
- 初级会计经济法基础-初级会计《经济法基础》模拟试卷421
- 智研咨询发布-2024年中国光储一体化行业市场运行态势及发展趋势预测报告
- 水下机器人航迹跟踪及容错控制方法研究
- 《中小学校园食品安全和膳食经费管理工作指引》专题知识培训
- 2024年新疆区公务员录用考试《行测》真题及答案解析
- Profinet(S523-FANUC)发那科通讯设置
- 第三章-自然语言的处理(共152张课件)
- 医学教程 常见化疗药物归纳
- 行政事业单位国有资产管理办法
- 六年级口算训练每日100道
- 高一生物生物必修一全册考试题带答题纸答案
- 统编版九年级历史下册第一单元教案教学设计
- 北师大版五年级上册四则混合运算100道及答案
- 人教部编版道德与法治八年级下册:6.3 《国家行政机关》说课稿1
评论
0/150
提交评论