国家二级(C++)机试模拟试卷12(共374题)_第1页
国家二级(C++)机试模拟试卷12(共374题)_第2页
国家二级(C++)机试模拟试卷12(共374题)_第3页
国家二级(C++)机试模拟试卷12(共374题)_第4页
国家二级(C++)机试模拟试卷12(共374题)_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级(C++)机试模拟试卷12(共9套)(共374题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共39题,每题1.0分,共39分。)1、下列语句中,错误的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*dolablepoint形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。2、有如下程序:intx=3:do{x-=2:cout<<x;}while(!(--x));执行这个程序的输出结果是()。A、1B、30C、1-2D、死循环标准答案:C知识点解析:本题考查do…while语句,执行do…while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。存本题中,先执行循环体内的语句,输出1,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。3、下列语句中,错误的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用conat在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*doublepoint形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。4、C++语言程序的注释可以出现在程序中的任何地方,一个注释的结束标记为()。A、/*B、*/C、:D、;标准答案:B知识点解析:C++语言程序的注释可以出现在程序中的任何地方,一个注释以“/*”开始,以“*/”结束。5、有如下类声明:classSAMPLE{intn;public:SAMPLE(inti=0):n(i){}voidsetValue(intn0);};下列关于getValue成员函数的定义中,正确的是()。A、SAMPLE::setValue(intnO){n=nO;}B、voidSAMPLE::setValue(intn0){n=n0;}C、voidsetValue(intn0){n=n0;}D、setValue(intn0){n=n0;}标准答案:B知识点解析:本题考查在类外定义类的成员函数,需要使用作用域限定符“::”,属于基础知识,本题答案为B。6、长度为一个字节的二进制整数,若采用补码表示,且由4个“1”和4个“0”组合,则可表示最小的整数是()。A、-127B、-121C、-15D、-7标准答案:B知识点解析:整数在计算机中有原码、反码和补码3种不同的表示方法。负数的反码是符号位为“1”,绝对值部分和原码相反。负数的补码是符号位为“1”,绝对值部分为反码的最低位加“1”。正整数的表示方法只有原码一种。A项的补码为(10000001),B项的补码为(10000111),C项的补码为(11110001),D项的补码为(11111001)。7、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。8、if语句的语法格式可描述为:格式1:if(<条件>)<语句>或格式2:if(<条件>)<语句1>else<语句2>关于上面的语法格式,下列表述中错误的是()。A、<条件>部分可以是一个if语句,例如if(if(a=:0)…)…B、<语句>部分可以是一个if语句,例如if(…)if(…)…C、如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变D、<语句>部分可以是一个循环语句,例如if(…)while(…)…标准答案:A知识点解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。9、下面关于指针的说法中错误的是()。A、在指针定义的同时可以对其进行初始化B、指针根据其所指向变量的类型的不同,所占用内存大小也不同C、指针中存放的是内存单元的地址D、相同类型的指针之间可以相互赋值标准答案:B知识点解析:指针是一种用来存放其他变量地址的数据类型,它的声明形式为:(类型)*(变量名),可以在声明的时候对其进行初始化。由于其存放的是内存单元的地址,所以大小一般都是4个字节。10、关于在调用模板函数时模板实参的使用,下列表述中正确的是()。A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D、对于常规参数所对应的模板实参,任何情况下都不能省略标准答案:D知识点解析:在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“<>”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“<>”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。11、)下列程序的输出结果是()。#includeusingnamespacestd;templateTfun(ra,Tb){return(a<=b)?a:b;}intmain(){cout<A、0,3.14B、3,3.14C、3,3D、3.14,3.14标准答案:B知识点解析:此函数模板的功能是输出a、b两数中较小的那个数。(3,6)输出3,(3.14F,6.28F)输出3.14。12、假定Xcs是一个类,该类中一个成员函数的原型为“Xcs*abc{};”,则在类外定义时对应的函数头为()。A、XesB、abcC、overrideD、overabc标准答案:C知识点解析:override是指派生类重写基类的虚函数。13、有3个关系R,S和T如下表所示:其中关系T由关系R和S通过某种操作得到,该操作为()。A、选择B、投影C、交D、并标准答案:D知识点解析:两个相同结构关系的并是由属于这两个关系的元组组成的集合。14、在三级模式之间引入两层映像,其主要功能之一是()。A、使数据与程序具有较高的独立性B、使系统具有较高的通道能力C、保持数据与程序的一致性D、提高存储空间的利用率标准答案:A知识点解析:数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。15、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。16、已知函数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。17、有如下程序:#includeusingnamespacestd;intmain(){intsum=0;for(inti=0;i<=3;i+=1){sum+=i;while(sum<100)sum+=i;}cout<<sum<A、输出100B、输出103C、输出105D、死循环标准答案:D知识点解析:程序在for循环中嵌套while循环。for循环的初始条件为,sum、i初值为0;进入for循环之后,首先将sum累加i,此时sum、i仍为0;while循环中,若sum小于100,则将sum累加i,继续while循环;当sum不满足条件时,退出循环。由于sum、i初值为0,所以while循环中sum始终为0,始终满足循环条件sum<100,所以程序进入死循环。答案为D。18、下列有关虚函数的表述中,错误的是A、在C++中,运行时的多态性是通过虚函数体现的B、在类声明中只有加了保留字virtual的成员函数才是虚函数C、通过指针或引用对虚函数的调用称为多态调用D、非多态调用总是通过成员访问运算符.进行的标准答案:B知识点解析:C++中,触发多态性必须满足两个条件:1、被调用函数为虚函数;2、必须通过基类类型的引用或指针调用函数,选项A、C正确;非多态调用虚函数只能通过类对象调用,类对象调用虚函数使用成员访问运算符"."进行,选项D正确;一旦函数在基类中被声明为虚函数,那它在后续的派生类中都是虚函数,可以不使用virtual关键字,派生类无法改变该函数是虚函数这一事实;选项B错误;答案为B。19、关于函数重载,下列叙述中错误的是()。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同标准答案:C知识点解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。20、执行下列语句:#include<iostream>usingnamespacstd;intmain(){intx=3;if(x=5)cout<<x++<<endl;elsecout<<x<<endl:return0;}程序的输出是()。A、3B、4C、5D、6标准答案:C知识点解析:if(条件)语句1else语句2,语句的执行过程是:首先判断条件是否为真(不为0),为真则执行语句1,否则执行语句2。题目中的条件是x=5,意思是把5赋予变量x,它将x置5且返回一个真值。21、有如下类声明:classHow{intk;public:How():k(99){}};则类How所拥有的构造函数的数量是A、1B、2C、3D、4标准答案:B知识点解析:首先类How定义了一个默认构造函数How(),因而编译器不会自动生成默认构造函数;其次How中需要一个复制构造函数,这由编译器自动生成,所以How有两个构造函数,答案为B。22、有如下程序:#includeusingnamespacestd;classBase{private:voidfun1()const{cout<<"fun1";}protected:voidfun2()const{cout<<"fun2";}public:voidfun3()const{cout<<"fun3";}};classDerived:protectedBase{public:voidfun4()const{cout<<"fun4";}};intmain(){Derivedobj;obj.fun1();//①obj.fun2();//②obj.fun3();//③obj.fun4();//④return0;}其中有语法错误的语句是()。A、①②③④B、①②③C、②③④D、①④标准答案:B知识点解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。23、将十进制数转换为二进制数的递归函数定义如下:voidd2b(unsignedintn){if((n==0)||(n==1))cout<A、1B、2C、3D、4标准答案:D知识点解析:递归函数d2b,首先判断参数n是否为0或1,若是,则输出n,函数调用结束;否则递归调用自身,将n/2当做新的参数传入。所以d2b被调用时,参数分别是:10,5,2,1。所以函数d2b被调用4次。答案为D。24、某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中。则实体仓库和零件间的联系是A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。每个仓库存放有不同的零件,相同零件可能放在不同的仓库中,故实体仓库和零件间的联系是多对多,A选项正确。25、下列叙述中,错误的是A、false是一个逻辑型常量B、0是一个字符型常量C、1481是一个int常量D、1.732是一个double常量标准答案:B知识点解析:本题主要考查了常量的类型,其中B选项中"0"中由于是双引号,所以是字符串,单引号表示字符常量,所以B选项错误。26、若x和y是程序中的两个整型变量,则下列if语句中正确的是A、if(x!=0)y=1;elsey=2;B、if(x!=0)y=1elsey=2;C、if(x!=0)theny=1elsey=2;D、ifx!=0y=1;elsey=2;标准答案:A知识点解析:本题考查if语句,if语句一种形式为:27、下列关于赋值运算符=重载的叙述中,正确的是A、赋值运算符只能作为类的成员函数重载B、默认的赋值运算符实现了"深层复制"功能C、重载的赋值运算符函数有两个本类对象作为形参D、如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符标准答案:A知识点解析:本题考查字符串的定义,A选项中,定义了一个字符,而用字符串赋值,所以错误,C选项定义了字符数组,但是赋值的字符串实际上有6个字符,所以赋值错误,D选项定义了一个字符串指针数组,赋值错误。28、有如下程序段:inti=9;while(inti=0){cout<<’*’;i--;}运行时输出*的个数是A、0B、1C、9D、无穷标准答案:A知识点解析:本题考查赋值运算和while循环,i被赋值为为0,所以while中的判断条件为假,不执行循环体,所以输出为0个。29、有如下类定义:classPerson{public:Person(strings):name(s){}protected:stringname;};classFather:virtualpublicPerson{public:Father(strings):Person(s){}};classMother:virtualpublicPerson{public:Mother(strings):Person(s){}};classChild:publicFather,publicMother,virtualpublicPerson{public:Child(strings1,strings2,strings3):Mother(s1),Father(s2),Person(s3){}};在建立派生类Child的对象时,其基类Father、Mother和Person的构造函数的调用顺序为A、Father,Mother,PersonB、Mother,Father,PersonC、Person,Father,MotherD、Father,Person,Mother,Person,Person标准答案:C知识点解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类构造函数,所以本题中先调用基类person构造函数,然后执行father构造函数,最后执行mother构造函数。30、运算符重载时必须有所不同的是A、优先级B、结合性C、操作数个数D、操作数类型标准答案:D知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。而运算符的初衷就是操作数类型不同而实现相同的效果。31、有如下类定义:classBag{public:Bag();//①voidSetSize(strings);//②stringGetSize()const;//③friendvoidDisplay(Bag&b);//④private:stringsize;};在标注号码的4个函数中,不具有隐含this指针的是A、①B、②C、③D、④标准答案:D知识点解析:当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,所以①②③正确使用this指针。32、ClassA是一个类,现在执行下面语句:ClassAa[2],*b[2],*c=newClassA;调用ClassA类的构造函数的次数是A、1B、2C、3D、5标准答案:C知识点解析:创建对象数组时,需要用默认构造函数初始化每个元素,所以ClassAa[2]需要调用2次构造函数;创建对象指针数组b,数组b的元素是对象指针,没有生成新的对象,不需要调用构造函数;创建对象指针c,并使用动态分配方式创建新的对象,将新对象的指针赋给c,需要调用构造函数;综上所述,答案为C。33、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。34、有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test(){cout<<"constructor"<A、3B、constructordestructorC、copyconstructordestructorD、3destructor标准答案:D知识点解析:本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数,输出3,然后执行析构函数,输出destructor。所以本题答案为D。35、下列叙述中正确的是()。A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D、以上说法均不正确标准答案:C知识点解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C)。36、下列语句或语句序列中错误的是A、inta;constint*point=&a;B、constinta=10;C、constint*point=10;D、constint*point=newint(10);标准答案:C知识点解析:本题考查常指针,C选项中不能直接将整型变量赋值给常指针,所以C选项错误。37、字符串"8+a=b\n\r"的长度为A、14B、7C、9D、16标准答案:B知识点解析:本题考查字符常量中转义字符常量,\n,\r为转义字符,只占一个字节,所以该字符串的长度为7。选项B正确。38、下列选项中,正确的C++表达式是A、a1+B、b++2C、3=cD、-d4标准答案:D知识点解析:选项A中,"+"运算符作为一元运算符,应该放在操作数之前,返回操作数本身;作为二元运算符,必须作用于两个操作数;选项B中,"++"运算符是一元运算符,只能作用于一个操作数;选项C中,3是常量,不能用作赋值操作符的左值;选项D正确,"-"操作符作为一元运算符,放在操作数之前,对其操作数取负;答案为D。39、下列()是C++语言的有效标识符。A、_No1B、No.1C、12345D、int标准答案:A知识点解析:标识符是一个以字母或下画线开始的,由字母、下画线和数字组成的字符串,标识符不能与任意关键字同名。二、简单应用题(本题共1题,每题1.0分,共1分。)40、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。完成函数ToUpper(char*des,char*str),该函数实现把str字符串中小写字符转换成大写字符,并存发在des中。例如:str=“aBcdrFGHijK”;则:des=“ABCDEFGHIJK”;注意:不能修改程序的其他部分,只能补充Toupper()函数。#include#defineMAXLEN1024voidToUpper(char*des,char*str){}voidmain(){chardest[MAXLEN];char*str="aBcdrFGHiJK";Toupper(dest,str);cout<标准答案:for(inti=0;str[i]!=0;i++){if(str[i]>=’a’&&str[i]<=’z’)//比较是否是小写字母{des[i]=str[i]-’a’+’A’;//替换成大写字母}else{des[i]=str[i];//其他情况不变}des[i+1]=0;}知识点解析:(1)由审题分析可知,可利用循环来逐个检索str中的字符,循环变量i从0开始,直到str数组的结束,即str[i]==0为循环结束条件。(2)小写字母的判别方式为:str[i]>=’a’&&str[i]<=’z’,即该字符比’z’小,而且比’a’大,如果满足该条件则在该字符基础上加上(’A’-’a’)值转换为大写字母;如果是其他字符的话,无需转换,直接刚该字符放到des数组中。三、综合应用题(本题共1题,每题1.0分,共1分。)41、请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程pro.j3,其中包含了类IntegerSet和主函数main的定义。一个IntegerSet对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组elem的前若干单元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数remove从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数remove。在main函数中给出了一组测试数据,此时程序的正确输出结果应为:23452728316675234562728316675234561927283l667534561927283l66753456192728316675要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数WriteToFile已经编译为obj文件,并且在本程序中调用。//IntegorSet.h#ifndefINTEGERSET#defineINTEGERSET#includeusingnamespacestd;constintMAXELEMENTS=100;//集合最多可拥有的元素个数classIntegerSet{intelem[MAXELEMENTS];//用于存放集合元素的数组intcounter;//用于记录集合中元素个数的计数器public:IntegerSet():counter(0){}//创建一个空集合IntegerSet(intdata[],intsize);//利用数组提供的数据创建一个整数集合voidadd(intelement);//添加一个元素到集合中voidremove(intelement);//删除集合中指定的元素intgetCount()const{returncounter;}//返回集合中元素的个数intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidshow()const;},voidWriteToFile(char*);#endif//main.cpp#include"IntegerSet.h"#includeIntegerSet::IntegerSet(intdata[],intsize):counter(0){for(inti=0;i0;j--)if(element>=elem[j-1])break;//如果找到的是等于element的元素,说明要添加的元素已经存在,直接返回if(j>0)if(element=elem[j-1])return;//如果找到的是小于element的元素,j就是要添加的位置//该元素及其后面的元素依次后移,腾出插入位置for(intk=counter;k>j;k--)elem[k]=elem[k-1];elem[j]:element;//将element插入到该位置counter++;//计数器加1}voidIntegerSet::remove(intelement){//********333********//********666********}voidIntegerSet::show()const{for(inti=0;i标准答案:for(inti=0;i知识点解析:主要考查考生对有序数组的掌握,题目要求成员函数remove从集合中删除指定的元素(如果集合中存在该元素)。遍历数组elem中的元素,找出与形参element相等的元素,并将其删除,每删除一个元素,即将该元素之后的每个元素前移一位,如果不存在与形参element相等的元素则没有操作。使用下标i遍历数组,if语句判断是否与element相等。国家二级(C++)机试模拟试卷第2套一、选择题(本题共38题,每题1.0分,共38分。)1、在数据库系统的组织结构中,下列()映射把用户数据库与概念数据库联系了起来。A、外模式/模式B、内模式/外模式C、模式/内模式D、内模式/模式标准答案:A知识点解析:数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。2、下列关于C++函数的说明中,正确的是()。A、内联函数就是定义在另一个函数体内部的函数B、函数体的最后一条语句必须是return语句C、标准C++要求在调用一个函数之前,必须先声明其原型D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式标准答案:D知识点解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以A选项错误。函数可以没有返回值,所以就不需要return了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以C选项错误,正确选项为D。3、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。4、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。5、如果有以下定义及初始化:inta=3,*p=&a;则由此可以推断,*p的值是()。A、变量a的值,即3B、变量a的地址值C、变量P的地址值D、无意义标准答案:A知识点解析:此题考查的是指针变量的定义与赋初值。语句*p=&a是定义指针并且给指针赋初值,指向a,所以指针的值就是变量a的地址,*p的值就是a的值。6、下列对模板的声明中,正确的是()。A、templateB、templateC、templateD、template标准答案:C知识点解析:声明一个函数模板的格式为:template<模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。7、有如下类声明:classTestClass{intn;public:TestClass(inti=0):n(i){}voidsetValue(intn0);};下面关于setValue成员函数的实现中,正确的是()。A、TestClass::setValue(intn0){n=n0;}B、voidTestClass::setValue(intn0){n=n0;}C、voidsetValueq(intn0){n=n0;}D、setValue(intn0){n=n0;}标准答案:B知识点解析:C++中类成员函数的实现形式为:返回类型类名::成员函数名(参数列表){代码块}8、有如下程序:#include<iostream>usingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<888<<endl;return0:}的执行结果是()。A、###888B、888###C、***888D、888***标准答案:A知识点解析:C++在流操作中,利用cout对象的width属性设置输出字符的宽度,用fill函数来设置需要填充的字符。题目程序中,首先设置填充字符为*,输出宽度为6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于888不足6个字符,所以在前面以三个“#”来填充。9、在关系A(S,SN,E)和关系B(E,CN,NM)扣,A的主关键字是S,B的主关键字是E,则关系A的外码是()。A、SB、SNC、NMD、E标准答案:D知识点解析:外码用于建立和加强两个关系之间的连接,通过将关系中主键值的一列或多列属性添加到另一个关系中,可建立两个关系之间的联系,这个列属性称为第二关系的外码。10、软件详细设计产生的图如下:该图是()。A、N-S图B、PAD图C、程序流程图D、E-R图标准答案:C知识点解析:N-S图提出了用方框图来代替传统的程序流程图,所以A不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B不对。E-R图是数据库中的用于表示E-R模型的图示工具,所以D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。11、下列情况中,不会调用拷贝构造函数的是()。A、用一个对象去初始化同一类的另一个新对象时B、将类的一个对象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:B知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名(const类名&引用对象名)。当一个类的对象赋值给该类的另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函数。12、下面是关于派生类声明的开始部分,其中正确的是()。A、classvirtualB:publicAB、virtualclassB:publicAC、classBpublicAvirtualD、classB:virtualpublicA标准答案:D知识点解析:声明派生类的一般形式为:class派生类名:【继承方式】基类名。其中继承方式包括:public,pfivate,promcmd,而virtual为C++中的关键字。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。13、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。A、逻辑设计B、需求分析C、详细设计D、物理设计标准答案:B知识点解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。14、有如下类定义: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个构造函数。15、有如下程序:#includeusingnamespacestd;classBase{intx;public:Base(intn=0):x(n){cout<A、375B、357C、0375D、0357标准答案:C知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象d1,先执行基类的构造函数输出0,再执行派生类的构造函数输出3,然后定义了一个对象d2(5,7),其中需要调用基类的构造函数输出7,最后输出5,所以答案为C。16、下列关于运算符函数的描述中,错误的是()。A、运算符函数的名称总是以operator为前缀B、运算符函数的参数可以是对象C、运算符函数只能定义为类的成员函数D、在表达式中使用重载的运算符相当于调用运算符重载函数标准答案:C知识点解析:运算符函数可以定义为类的友元函数。所以C选项错误。17、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、以上三种说法都不对标准答案:A知识点解析:栈是限定在一端进行插入删除的先入后出的线性表数据结构,栈顶元素最后被插入到栈中,但是最先被删除;而栈底元素最先被插入,最后被删除。18、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。19、下列关于派生类构造函数和析构函数的表述中,错误的是()。A、在基类中没有定义构造函数,那么在派生类中也可不定义构造函数;B、派生类的构造函数会隐含调用基类的构造函数;C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数;D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数。标准答案:D知识点解析:派生类对象的撤销顺序与构造顺序相反:首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数,这样做是为了每次析构函数销毁的都是完整的对象,选项D错误,答案为D。20、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:D知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所以为一对多联系。21、下列定义语句中,错误的是()。A、intpx*;B、char*acp[10];C、char(*pac)[10];D、int(*p)();标准答案:A知识点解析:定义一个int型指针的方式应该是int*px,*在类型与变量名之间。22、当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的A、逻辑独立性B、物理独立性C、应用独立性D、空间独立性标准答案:A知识点解析:数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故A选项正确。23、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assA{public:A(){cout<<"A";}};c1assB{public:BO{cout<<"B";}};c1assC:publicA{Bb;public:C(){cout<<nC¨;}};intmain(){Cobj;return0;}执行后的输出结果是()。A、ABCB、BACC、ACBD、CBA标准答案:A知识点解析:C++程序中的执行子类,首先执行基类的构造函数,然后执行数据成员类的构造函数,最后执行子类本身的构造函数,所以输出结果为ABC。24、有如下程序:#includeusingnamespacestd;classA{public:A(inti){x=i;}voiddispa(){cout<<x<<′,′;}private:intx;};classB:publicA{public:B(inti):A(i+10){x=i;}voiddispb(){dispa();cout<<x<<endl;}private:intx;};intmain(){Bb(2);b.dispb();return0;}执行这个程序的输出结果是()。A、10,2B、12,10C、12,2D、2,2标准答案:C知识点解析:本题考查派生类的构造函数和基类的构造函数。本题中类B继承类A,定义了一个类B的对象并初始化b(2),此时会执行类B的构造函数,执行的结果是继承类A中的私有成员赋值了12,给类B自身的数据成员x赋值了2,执行b.dispb()后,输出类A的私有成员x,输出类B自身的数据成员,所以答案为C。25、下列有关继承和派生的表述中,正确的是A、派生类的成员函数可以访问基类的所有成员B、如果一个派生类私有继承其基类,则该派生类的对象能访问基类的保护成员C、基类对象可以直接赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:派生类对基类成员的访问权限由基类成员的访问标识和类派生列表中的访问标识共同决定的,选项A错误;派生类私有继承基类,基类的保护成员在派生类中为private成员,派生类对象不可见,选项B错误;派生类包含基类中没有的成员变量和成员函数,将基类对象赋给派生类对象,在调用这些成员时报错,选项C错误;答案为D。26、有如下类和变量定义:classParents{public:intpublicData;private:intprivateData;};classdA:publicParents{/*类体略*/};classdB:privateParents{/*类体略*/};dAx;dBy;下列表达式中正确的是A、x.publicDataB、x.privateDataC、y.privateDataD、y.publicData标准答案:A知识点解析:dA公有继承Parents,dB私有继承Parents,所以Parents中的公有成员publicData在dA中是公有成员,对x可见,在dB中是私有成员,对y不可见,Parents中的私有成员privateData对x和y都不可见;由此可知:只有x可以访问publicData,答案为A。27、某二叉树的中序序列为BDCA,后序序列为DCBA,则前序序列为A、DCBAB、BDCAC、ABCDD、BADC标准答案:C知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中中序序列为BDCA,后序序列为DCBA,可知A为根结点,BDC为左侧结点,C是B右子结点,D是C右子结点,故前序序列为ABCD,C选项正确。28、某系统总体结构图如下图所示:该系统总体结构图的深度是()。A、7B、6C、3D、2标准答案:C知识点解析:根据总体结构图可以看出该树的深度为3,比如:XY系统---功能2----功能2.1,就是最深的度数的一个表现。29、结构化程序所要求的基本结构不包括()。A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。30、有如下程序:#includeusingnamespacestd;voidfun(inti){cout<<"inti/";}voidfun(charc){cout<<"charc/";}intmain(){fun(0);fun(’c’);return0;}运行后的输出结果是A、inti/inti/B、inti/charc/C、charc/inti/D、charc/charc/标准答案:B知识点解析:程序有两个重载fun函数,函数原型分别为fun(int)、fun(char);main函数中调用fun(0),由于0可以精确匹配原型为fun(int)的函数,所以fun(0)将选择原型为fun(int)的函数,输出inti/;同理fun(’c’)精确匹配原型为fun(char)的函数,输出charc/,程序最终输出结果为:inti/charc/;答案为B。31、下面不属于对象主要特征的是A、唯一性B、多态性C、可复用性D、封装性标准答案:C知识点解析:对象的基本特点如下:可知C选项正确。32、下列各组类型声明符中,含义相同的一组是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int标准答案:B知识点解析:本题考查整型变量的类型,A、C选项中前者为无符号的,后者为有符号的,D选项中shortint为2个字节,int为4个字节。33、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/S54B、/N41/C54C、/C41/S54D、/C41/C54标准答案:A知识点解析:本题考查构造函数相关知识,本题中定义一个对象room1,执行room1.Print时执行构造函数给size赋值为41,然后执行voidPrint(){cout<<’/’<<’N’<34、以下关键字不能用来声明类的访问权限的是()。A、publicB、staticC、protectedD、private标准答案:B知识点解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。35、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base::fun();C、Base->fun();D、fun();标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。36、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:只有B)选项369可以用无符号整数来表示和存储。A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。选项D)是一个整数集合得用数组来存储。37、要利用C++流进行文件操作,必须在程序中包含的头文件是A、iomanipB、fstreamC、strstreamD、cstdlib标准答案:B知识点解析:iomanip是I/O流控制头文件;strstream是输入输出字符串流头文件;cstdlib是常用函数库,提供一些函数和符号常量;选项A、C、D错误;fstream是输入输出文件流头文件,答案为B。38、下列因素中,对C++编译器区分重载函数无任何意义的是()。A、常成员函数关键字constB、返回值类型C、参数类型D、参数个数标准答案:B知识点解析:C++中,两个函数是重载函数,必须具有相同的名字,且形参表或oonst属性不同,选项A、C、D都可以区分;函数不能仅仅基于不同的返回类型而实现重载,选项B不能区分,本题答案为B。二、基本操作题(本题共1题,每题1.0分,共1分。)39、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到s1,s2中。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。1#include2voidmain()3{4char*s1;5chars2[1024];6cout<<"pleaseinputastring:"<标准答案:(1)s1=newchar[1024];(2)delete[]s1;(3)删除“deletes2;”语句知识点解析:本题是主要是处理程序运行后是否有内存遗漏的问题。对于这类问题主要是根据调试环境中的错误提示以及警告提示进行处理。[解题思路](1)sl变量为指针变量,在使用前要对其分配空间,所以第1个标识下添加“s1=newchar[1024];”。(2)为了防止内存空间的泄漏,指针变量使用后,要将其空间释放,第二个标识下“delete[]s1;”。(3)s2是数组变量,空间是在使用前静态分配的,不是使用前动态分配的,所以使用后不用释放内存空间,这里应该删除“deletes2;”。三、简单应用题(本题共1题,每题1.0分,共1分。)40、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(intn),求出nXn矩阵的对角线数字的平方和。如果n为奇数,则对角线交叉部位数字只参与一次计算。注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineMAXN10intXX[MAXN][MAXN];intfun(intn){}voidmain(){intn;do{cout<<”pleaseinputN(1<=N<10):”<>n;if(n<10&&n>=1){break;}}while(1);for(inti=0;i>XX[i][j];}}cout<标准答案:intdata=0;//初始化求平方和变量for(inti=0;i知识点解析:本题函数中的功能是输出N行N列正方阵,然后求两条对角线上各元素之平方和。其中,假设矩阵行、列分别为i、j,那么对角线上的元素特点是主对角线上i=j,以及逆对角线j=n—i一1。四、综合应用题(本题共1题,每题1.0分,共1分。)41、使用VC6打开源程序文件modi3.cpp。其中类TestClass用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将int.tXt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件outl.txt和out2.txt中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释//********1********后添加适当的语句。(2)把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度。请在注释//********2********后添加适当的语句。(3)将输入文件的后一半内容存储在第二个文件中,请在注释//********3********后添加适当的语句。(4)使用文件流对象打开输入文件in.txt,请在注释//********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。1#include2#include3#include4classTestClass5{6public:7TestClassfchar*fileName)8{9len=0,10fstreaminfile;11infile.open(fileName,ios::in);12charch;13//********1********14while()15{16cout<标准答案:(1)将“while()”完整为:while(infile.get(ch))(2)添加语句:buf[len++]=ch;(3)添加语句:OUtfile2<知识点解析:在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的main主函数开始入手,可以看出程序通过调用类TestClass及其成员函数实现各种输出操作。[解题思路](1)题目1要求“从输入文件中获得一个字符,并判断是否到文件结尾”。程序中的“while()”循环判断语句中缺少从文件中获得的字符,所以这里补全while循环判断条件,即“while(infile.get(ch))”。(2)题目2要求“把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度。”所以为buf分配空间,即“buf[len++]=ch;”。(3)题目3要求“将输入文件的后一半内容存储在第二个文件中。”在C++中,用流插入运算符为“<<”,所将buf中存放的数据存入文件outfile2,以根据题干中的要求,即这里补全“outfile2<国家二级(C++)机试模拟试卷第3套一、选择题(本题共38题,每题1.0分,共38分。)1、下列语句中,错误的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*dolablepoint形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。2、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值的成员函数标准答案:A知识点解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。3、变量已正确定义为整型,则表达式“n=i=2,++i,i++;”的值为()。A、1B、2C、3D、4标准答案:C知识点解析:本题考查数据型及逗号表示式的运算。在逗号表达式中,其值取最后一个表达式的值为3。4、下列运算符函数中肯定不属于类FunNumber的成员函数的是()。A、intoperator-(FunNumber);B、FunNumberoperator-();C、FunNumberoperator-(int);D、intoperator-(FunNumber,FunNumber);标准答案:D知识点解析:本题考查运算符重载的一些规则:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符=、()、[]、->不能重载为类的友元函数;③类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;④若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;⑤若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;⑥当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该运算符函数必须作为一个友元函数来实现。所以答案为D。5、按照软件测试的一般步骤,集成测试应排列在()之后。A、单元测试B、系统测试C、验收测试D、以上均不正确标准答案:A知识点解析:软件测试过程分4个步骤进行,单元测试、集成测试、验收测试和系统测试,由此可看出集成测试在单元测试之后进行。6、设程序如下:#includeusingnarnespacestd;intmain(){int**p,*q,r=10;q=&ri;p=&q;tout<<**p+1<A、P的地址B、r的地址C、11D、运行错误标准答案:C知识点解析:p为一个二级指针,其存放的是指针变量q的地址,而q存放的又是r的地址。故式子**p相当于对r的引用。所以最后输出的结果为11。7、字面常量42、4.2、42L的数据类型分别是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long标准答案:C知识点解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字面常量后添加u或1来指定无符号整数或长整数来存储;对于实型字面常量,C++将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。8、一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为()。A、5,4,3,2,1,A,B,C,D,E,FB、1,2,3,4,5,F,E,D,C,B,AC、A,B,C,D,E,F,5,4,3,2,1D、1,2,3,4,5,A,B,C,D,E,F标准答案:C知识点解析:队列是先进先出的。9、关于模板,下列说法不正确的是()。A、用类模板定义一个对象时,不能省略实参B、类模板只能有虚拟类型参数C、类模板本身在编译中不会生成任何代码D、类模板的成员函数都是模板函数标准答案:B知识点解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C++中可以为类模板的参数设置默认值,所以选项B)错误。10、有如下程序:#includevoidmain(){charstr[2][5]={”1234159115678”),*p[2];intij,s=O;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;i++)for0=O;p[i]D]>‘\0;j+=2)s=lO*s+p[i]U]一‘0’;cout<A、1357B、2468C、3556D、23678标准答案:A知识点解析:程序中的“for(i=O;i<2;i++)p[i]=str[i];”语句将str中的值赋值给指针数组p。在接下来的二重for循环中,跳取“j+=2”,p指针指向的值即“1”,“3”,“5”,“7”。在分别对字符到整型的转换,即减去字符‘0’,然后依次转换为千位,百位,十位,个位“10*s”操作输出整型s,即“1357”。11、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不能重载,它们是:.(成员访问运算符)、.*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。12、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。13、下列选项中,正确的C++表达式是()。A、a+b=b+cB、xyz+C、www++9D、a[3]标准答案:D知识点解析:A选项中,a+b是表达式,不可以作为左值;选项B中,运算符“+”作为一元运算符,应该放在操作数之前,返回操作数本身;作为二元运算符,必须作用于两个操作数之间;选项c中,运算符“++”是一元运算符,只能有一个操作数;答案为D。14、下列关于this指针的叙述中,正确的是()。A、不能显式使用this指针B、类的友元函数中都有this指针C、this指针隐含于类的每一个静态成员函数中D、this指针指出了成员函数当前操作的数据所属的对象标准答案:D知识点解析:C++的类对象具有一个附加的隐含形参,即指向该类对象的指针this,与调用成员函数的对象绑定在一起,在成员函数的函数体可以显示使用this指针,选项A错误;类的友元函数可以不是普通的非成员函数,此时它没有this指针,选项B错误;静态成员函数并不与对象相关联,不属于任何一个类的对象,所以没有this指针,选项C错误;成员函数中的this指针指向当前操作的数据所属的类对象,选项D正确;本题答案为D。15、程序流程图中带有箭头的线段表示的是()。A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。16、有如下程序:#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正确。17、当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的A、逻辑独立性B、物理独立性C、应用独立性D、空间独立性标准答案:A知识点解析:数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故A选项正确。18、在下面的4个关键字中用来说明虚函数的是()。A、virtualB、publicC、protectedD、private标准答案:A知识点解析:C++中用virtual关键字声明虚函数。而public、protected、private为成员访问限定符。19、有如下类定义:classBase1{intm;public:Base(intm1):m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论