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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷1(共9套)(共332题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共38题,每题1.0分,共38分。)1、下列数据结构中,属于非线性结构的是()。A、循环队列B、带链队列C、二叉树D、带链栈标准答案:C知识点解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。2、下列数据结构中,能够按照"先进后出"原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。3、对于循环队列,下列叙述中正确的是()。A、队头指针是固定不变的B、队头指针一定大于队尾指针C、队头指针一定小于队尾指针D、队头指针可以大于队尾指针,也可以小于队尾指针标准答案:D知识点解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以对头指针有时可能大于队尾指针有时也可能小于队尾指针。4、算法的空间复杂度是指()。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A。5、软件设计中划分模块的一个准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。6、软件详细设计生产的图如下:该图是()A、N-S图B、PAD图C、程序流程图D、E-R图标准答案:C知识点解析:N-S图提出了用方框图来代替传统的程序流程图,所以A)不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B)不对。E-R图是数据库中的用于表示E-R模型的图示工具,所以D)不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。7、数据库管理系统是()。A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统标准答案:B知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。8、在E-R图中,用来表示实体联系的图形是()。A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:在E-R图中实体集用矩形,属性用椭圆,联系用菱形。9、下列符号中可以用做C++标识符的是()。A、_radiusB、foo~barC、elseD、3room标准答案:A知识点解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项B包含了字符"~",选项C是关键字,选项D不能以数字开头。故答案为A。10、下列各组类型声明符中,含义相同的一组是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int标准答案:B知识点解析:本题考查整型变量的类型,A、C选项中前者为无符号的,后者为有符号的,D选项中shortint为2个字节,int为4个字节。11、必须用一对大括号括起来的程序段是()。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:本题考查C++基本控制结构,A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。12、语句int*p=&k;定义了指针p,与这个语句等效的语句序列是()。A、int*p;p=&k;B、int*p;p=k;C、int*p;*p=&k;D、int*p;*p=k;标准答案:A知识点解析:本题考查指针和地址,题目中定义了一个指向变量k的一个指针p,那么与题目中等效的表达式A选项,即先定义一个指向整型的指针,然后指向k的地址。13、执行下列语句段后,输出字符"*"的个数是()。for(inti=50;i>1;i-=2)cout<<′*′;A、24B、25C、26D、50标准答案:B知识点解析:本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么只有50到2之间的偶数才能输出"*",所以总共输出25次。14、下列关于运算符重载的叙述中,错误的是()。A、有的运算符可以作为非成员函数重载B、所有的运算符都可以通过重载而被赋予新的含义C、不得为重载的运算符函数的参数设置默认值D、有的运算符只能作为成员函数重载标准答案:B知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。所以答案为B。15、对C++编译器区分重载函数无任何意义的信息是()。A、参数类型B、参数个数C、返回值类型D、常成员函数关键字const标准答案:C知识点解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为C。16、运算符重载时不需要保持的性质是()。A、操作数个数B、操作数类型C、优先级D、结合性标准答案:B知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。所以答案为B。17、下列关于函数的描述中,错误的是()。A、函数可以没有返回值B、函数可以没有参数C、函数可以是一个类的成员D、函数不能被定义为模板标准答案:D知识点解析:本题考查函数的基础知识,函数可以没有返回值,没有参数,也可以是一个类的成员,函数可以定义为模板,即模板函数。18、关于函数重载,下列叙述中错误的是()。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同标准答案:C知识点解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为C。19、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不能重载,它们是:.(成员访问运算符)、.*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。20、有如下函数定义: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。21、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。22、有如下头文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:只有类的非静态成员函数才隐含this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。所以本题答案为C。23、下列关于类定义的说法中,正确的是()。A、类定义中包括数据成员和函数成员的声明B、类成员的缺省访问权限是保护的C、数据成员必须被声明为私有的D、成员函数只能在类体外进行定义标准答案:A知识点解析:类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。24、如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是()。A、public和publicB、public和protectedC、protected和publicD、protected和protected标准答案:D知识点解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。25、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。26、有如下类定义:classAA{inta;public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)};其中横线处缺失的部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为B。27、有如下程序:#includeusingnamespacestd;classCD{public:~CD(){cout<<′C′;}private:charname[80];};intmain(){CDa,*b,d[2];return0;}执行这个程序的输出结果是()。A、CCCCB、CCCC、CCD、C标准答案:B知识点解析:本题考查类的析构函数,题目中定义了类的一个对象a,对象指针*b,对象数组d[2],当程序执行完后,析构函数执行了3次,输出"CCC",对象指针不会执行析构函数。所以本题答案为B。28、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){++count;}~MyClass(){--count;}staticintgetCount(){returncount;}private:staticintcount;};intMyClass::count=0;intmain(){MyClassobj;cout<A、121B、232C、221D、122标准答案:A知识点解析:本题考查静态数据成员。静态数据成员在内存中只占一份空间,静态数据成员属于类,即使不定义对象,也会给静态数据成员分配空间,可以被引用。本题中先是定义了一个对象obj,执行构造函数使得静态数据成员count变为了1,然后又定义了指针对象,执行构造函数后,count变为了2,释放指针后,执行析构函数,使得count变为了1。所以本题答案为A。29、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidPrint()const{cout<<"const:val="<标记报错收藏查看答案标准答案:B知识点解析:本题考查带参数的构造函数。本题中定义了一个对象obj,那么执行其构造函数,初始化p1,p2的顺序是由声明这两个成员的顺序决定的,而不是由参数化列表顺序决定,所以本题中,会先执行p1,输出2,然后执行p2输出1,然后输出3,最后一次输出312。所以本题答案为B。31、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<A、0B、1C、01D、001标准答案:D知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题中定义了一个对象d,先执行基类的构造函数输出0,因为派生类中的私有数据成员为Base,所以还会执行一次基类的构造函数输出0,最后执行派生类的构造函数输出1,所以本题答案为D。32、下列代码段中声明了3个类:classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列关于这些类之间关系的描述中,错误的是()。A、类Person是类Undergraduate的基类B、类Undergraduate从类Student公有继承C、类Student是类Person的派生类D、类Undergraduate是类Person的派生类标准答案:B知识点解析:本题考查基类和派生类的逻辑关系,属于基础知识,如果没有指明哪种继承方式,那么默认为私有继承,所以B选项错误。33、有如下程序:#includeusingnamespacestd;classBase{public:voidoutput(){cout<<1;}virtualvoidPrint(){cout<<′B′;}};classDerived:publicBase{public:voidoutput(){cout<<2;}voidPrint(){cout<<′D′;}};intmain(){Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;return0;}执行这个程序的输出结果是()。A、1BB、1DC、2BD、2D标准答案:B知识点解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个指向派生类对象的基类指针ptr,执行ptr->output后,会执行基类的output函数,输出1,由于Print是虚函数,所以ptr->Print()会执行派生类的Print,即输出D,所以本题答案为B。34、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();}voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);deletep;return0;}执行这个程序的输出结果是()。A、BBBB、BBDC、DBBD、DBD标准答案:C知识点解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类B的对象b、对象指针*p=newD以及类D的对象d;执行fun1会调用派生类的show函数,因为show函数为虚函数,而调用fun2、fun3仍然为基类的show函数,所以本题答案为C。35、C++中的模板包括()。A、对象模板和函数模板B、对象模板和类模板C、函数模板和类模板D、变量模板和对象模板标准答案:C知识点解析:本题考查函数模板和类模板,所以答案为C。36、下列关于类模板的模板参数的叙述中,错误的是()。A、模板参数可以作为数据成员的类型B、模板参数可以作为成员函数的返回类型C、模板参数可以作为成员函数的参数类型D、模板参数不能作为成员函数的局部变量的类型标准答案:D知识点解析:本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变量的类型。37、下列关于C++预定义流对象的叙述中,正确的是()。A、cin是C++预定义的标准输入流对象B、cin是C++预定义的标准输入流类C、cout是C++预定义的标准输入流对象D、cout是C++预定义的标准输入流类标准答案:A知识点解析:cin是C++预定义的标准输入流对象,cout是C++预定义的标准输出流对象。38、有如下语句序列:charstr[10];cin>>str;当从键盘输入"Ilovethisgame"时,str中的字符串是()。A、IlovethisgameB、IlovethiC、IloveD、I标准答案:D知识点解析:cin是C++预定义的标准输入流对象,cin用来接收字符串时,遇"空格"、"TAB"、"回车"时都会结束。所以本题答案为D。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、有如下类定义和变量定义:classParents{public:intpublicData;private:intprivateData;};classChildA:publicParems{/*类体略*/};classChildB:privateParems{/*类体略*/};ChildAa;ChildBb;下列语句中正确的是()。A、tout<B、cout<C、cout<D、cout<标准答案:A知识点解析:基类Parents的私有成员privateData在派生类ChildA和ChildB中是不可以访问,所以选项B、D是错误,而派生类ChildB私有继承基类Parents,所以基类Parents的公有成员publicData在派生类ChildB中变为私有成员,只能在派生类ChildB内部访问,因而选项C是错误的。派生类ChildA公有继承基类Parents,所以基类Parents的公有成员publicData在派生类ChildA中可以访问。2、通过派生类的对象可直接访问其()。A、公有继承基类的公有成员B、公有继承基类的私有成员C、私有继承基类的公有成员D、私有继承基类的私有成员标准答案:A知识点解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类中进行访问,而通过派生类的对象不能访问,所以选项C也是错误的。基类的公有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。3、有如下程序:#includeusingnamespacestd;classAA{intk;protected:intn;voidsetK(intk){this->k=K;}public:voidsetN(intn){this->n=n;}};classBB:publicAA{/*类体略*/};intmain(){BBx;x.n=1;∥1x.setN(2);∥2x.k=3;∥3x.setK(4);∥4return0;}在标注号码的四条语句中正确的是()。A、1B、2C、3D、4标准答案:B知识点解析:因为类BB公有继承自类AA,所以AA中的保护成员和公有成员在类BB中仍是保护成员和公有成员。在选项B中调用了公有成员函数setN(intn){this->n=n;),对保护成员n进行赋值操作。4、有如下两个类定义classxx{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:在C++中派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说,YY类保护继承自类XX,那么类XX中的公有成员x3和保护成员x2在派生类中都成为保护成员,再加上类YY中的保护成员y2,因此在派生类YY中保护成员的个数为3。5、有如下程序:#includeusingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);}protected:chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");∥①strcpy(title,str);∥②}};下列叙述中正确的是()。A、程序编译正确B、程序编译时语句①出错C、程序编译时语句②出错D、程序编译时语句①和②都出错标准答案:C知识点解析:派生类Jazz不能访问基类Music中的私有成员title。6、当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是()。A、任何B、公有或保护C、保护或私有D、私有标准答案:B知识点解析:基类的公有成员和保护成员只有在以保护继承方式继承时,其在继承类中是保护成员。7、下列关于派生类和基类的描述中,正确的是()。A、派生类成员函数只能访问基类的公有成员B、派生类成员函数只能访问基类的公有和保护成员C、派生类成员函数可以访问基类的所有成员D、派生类对基类的默认继承方式是公有继承标准答案:B知识点解析:派生类不论是采用那种继承方式继承基类,它的成员函数只能访问基类的公有成员和保护成员。8、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。A、obj.fan1();B、obj.fun2();C、obj.ftm3();D、obj.fun4();标准答案:A知识点解析:派生类D公有继承父类B,所以obj可以访问基类B的公有,不能访问其它成员。9、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;d1.data=0;∥①d2.data=0;∥②return0;}下列关于程序编译结果的描述中,正确的是()。A、①②皆无编译错误B、①有编泽错误,②无编译错误C、①无编译错误,②有编译错误D、①②皆有编译错误标准答案:C知识点解析:保护继承的类Dervied2不能访问基类Base中的公共数据成员data。10、有如下程序:#includeusingnamespacestd;classxx{intx;public:XX(intxx=0):x(xx){}intgetX(){returnx;}};classYY:publicXX{inty;public:YY(intxx,intyy):XX(xx),y(yy){}intgetV(){returngetX()+y;}};intmain(){YYc(3,4);cout<A、3B、4C、7D、10标准答案:D知识点解析:由于类YY公开继承自类XX,所以执行表达式c.getV()+c.getX()的值等于3+3+4=10。11、有如下程序:#includeusingnarnespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<A、语句①B、语句②C、语句③D、语句④标准答案:B知识点解析:类Book私有继承自类Media,所以类Media中的公有成员函数Name()在继承类Book中变成了私有成员函数,因而类Book的对象Bible不能访问私有成员函数Name()。12、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";)};classB{public:B(){cout<<"B";)}classC:publicA{Bb;public:B(){cout<<"C";}};intmain(){Cobj;return0;}执行后的输出结果是()。A、CBAB、BACC、ACBD、ABC标准答案:D知识点解析:此题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。13、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"—A";}};classB:publicA{A*p;public:B(){cout<<"B";P=ncwA();}~B(){cout<<"~B";deletep;}};intmain(){Bobj;return0;}执行这个程序的输出结果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的顺序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行派生类的构造函数。所以本题在建立派生类B的对象0bj是会先调用基类A的构造函数,然后调用自身的构造函数。注意:B类中定义的成员p是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在B类构造函数中使用new操作符动态地构造了一个A类的对象,所以整个构造结果是输出:ABA。派生类对象的析构与构造严格相反,即先析构自身,然后析构自身所包含的成员对象,最后调用基类的析构函数。故本题中当main()函数返回时,析构B类的对象obj:首先调用~B(),接着再调用~A()因为在~B()函数中释放了动态创建的A类对象,故整个析构所输出的结果是~B~A~A。所以这个程序输出结果为ABA~B~A~A。14、有如下程序#includeusingnamespacestd;classBase{protected:Base(){cout<<’A’;)Base(charc){cout<A、BB、BAC、ABD、BB标准答案:C知识点解析:此题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序是:执行基类的构造函数,调用顺序按照各个基类被被继承时声明的顺序;执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序;执行派生类的构造函数。此题中,在建立派生类Derived的对象dl时会先调用基类Base的构造,调用的是默认构造函数,输出字符‘A’;然后调用自身的构造函数,输出‘B’;故程序的输出结果是:AB。15、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。16、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:此题考查的是继承和派生。无论使用哪种继承方式,派生类中的成员都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,所以选项A错误;C++中只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以选项B错误;在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,故选项D错误。17、有如下程序:#includeusingnamespacestd;classA{public:A(inti){X=i;}voiddispa(){cout<A、10,2B、12,10C、12,2D、2,2标准答案:C知识点解析:此题考查的是派生类的构造。主函数中,首先声明B类的对象b,执行进入B的构造函数B(inti)再接着执行A的构造函数A(inti),形参i为12,x被赋值12;通过对象b调用其成员函数dispb(),输出结果12:接着执行函数dispb()的第2条语句输出2,然后主函数结束。18、有如下程序:#includeusingnamespacestd;classBase{intx;public;Base{intn=0};x(n){cout<A、375B、357C、0375D、0357标准答案:C知识点解析:此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序->执行自身的构造函数。此题中,执行语句Derivedd1(3)首先调用基类的构造函数,输出0:接着调用自身的构造函数输出3。执行语句Derivedd2(5,7)时,会调用基类的Base(n)函数输出7;然后执行继承类中的Derived(intm,intn)的y(m)输出5。19、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<’1’;}};classBB:publicAA{intk;public:BB():k(0){cout<<’2’;}BB(intn):k(n){cout<<’3’;}};intmain(){BBb(4),c;return0;}运行时的输出结果是()。A、1312B、132C、32D、1412标准答案:A知识点解析:在基类AA的默认构造函数中,输出字符‘1’,在继承类BB的默认构造函数中,输出字符‘2’,在带有参数n的构造函数中,输出字符‘3’。在主函数中,在创建BB的对象b(4)时,会首先调用基类AA的构造函数输出字符‘1’,再调用类BB带参数的构造函数输出字符‘3’。在创建BB的对象c时,会首先调用基类AA的构造函数输出字符‘1’,再调用类BB默认的构造函数输出字符‘2’。所以程序输出的结果为1312。20、有如下程序:#includeusingnamespacestd;classCl{public:~4210{cout<<1;}};classC2:publicC1{public:~C2(){cout<<2;}};intmain(){C2cb2;C1*cb1;return0;}运行时的输出结果是()。A、121B、21C、211D、12标准答案:B知识点解析:在主函数中定义C2类的对象,当程序结束时,首先调用C2类的析构函数~C2,输出2,再调用C1类的析构函数~C1,输出1。所以程序运行的结果就是21。21、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0):valB(x){cout<A、2332B、2323C、3232D、3223标准答案:A知识点解析:在主函数中创建类Derived对象obj12(2,3)时,因为类Derived是从基类Base派生而来,所以首先调用基类的构造函数,输出2,再调用派生类构造函数,输出3。当主函数运算结果时,首先调用派生类的析构函数,输出3,再调用基类的析构函数输出2。所以输出结果为2332。22、生成派生类对象时,派生类构造函数调用基类构造函数的条件是()。A、无需任何条件B、基类中显示定义了构造函数C、派生类中显式定义了构造函数D、派生类构造函数明确调用了基类构造函数标准答案:A知识点解析:因为派生类从基类中继承,它含有基类中的数据成员和函数成员,所以当生成派生类对象时,能无条件的调用基类的构造函数。23、有如下类定义:classAA{inta:public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)______};其中横线处缺失部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}标准答案:B知识点解析:根据派生类构造函数的一般格式:<派生类名>(<总参数表>):<基类名1>(<参数表1>),…<基类名n>(<参数表n>),<成员对象名1>(<参数表n+1>),…<成员对象名m>(<参数表n+m>)<派生类构造函数体>。在派生类BB的构造函数总参数表后面应该接上基类名AA和其参数。24、有如下程序:#ineludeusingnamespacestd;classBasel{public:Basel(intd){cout<A、1234B、2134C、12D、21标准答案:D知识点解析:程序在创建派生类对象d时,分别调用基类Basel和Basel的构造函数。25、已知基类Employee只有一个构造函数,其定义如下:Employee∷Employee(intn):id(n){}Manager是Employee的派生类,则下列对Manager的构造函数的定义中,正确的是()。A、Manager∷Manager(intn):id(n){}B、Manager∷Manager(intn){id=n;}C、Manager∷Manager(intn):Employee(n){}D、Manager∷Manager(intn){Employee(n);}标准答案:C知识点解析:基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生类的构造函数名后面显示的调用基类的构造函数。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共35题,每题1.0分,共35分。)1、程序流程图中带有箭头的线段表示的是()。A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。2、结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。3、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。4、在软件开发中,需求分析阶段产生的主要文档是()。A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。5、算法的有穷性是指()。A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。6、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n-1)/2。7、下列关于栈的叙述正确的是()。A、栈按"先进先出"组织数据B、栈按"先进后出"组织数据C、只能在栈底插入数据D、不能删除数据标准答案:B知识点解析:栈是按"先进后出"的原则组织数据的,数据的插入和删除都在栈顶进行操作。8、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。9、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。10、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C。11、下列符号中能够作为C++标识符的是A、ClassB、gpa4.0C、1481quanzhanD、-score标准答案:A知识点解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线,只有A选项正确。12、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=6,RED,BLACK=10};则枚举常量RED的值为A、2B、3C、7D、8标准答案:C知识点解析:枚举常量的定义enum枚举类型名{常量1,常量2,常量3,};其中GREEN=6,BLACK=10,那么RED为7,答案为C。13、执行语句序列intn=0;for(inti=60;i>0;i-=3)n++;之后,变量n的值是A、20B、21C、60D、61标准答案:A知识点解析:本题考查for循环语句,i每次减1,所以for循环执行20次。选项A正确。14、常量4.2、4.2f、4L的数据类型分别是A、float、float、doubleB、double、float、longC、double、double、floatD、float、float、long标准答案:B知识点解析:本题考查实型变量,4.2默认为double,4.2f为float型的、4L为long型的。所以B选项正确。15、在一个有参函数的原型声明中可有可无的语法成分是A、形参类型B、形参变量C、函数名D、函数返回类型标准答案:B知识点解析:函数原型,包含返回值,函数名,参数类型,而形参变量可有可无,所以答案为B选项。16、函数声明中有一个明显的错误,这个错误就是A、参数表中不应该有任何参数B、缺少对函数返回类型的说明C、参数声明中缺少参数变量D、函数声明中缺少函数体标准答案:A知识点解析:本题考查类型转换函数,其一般形式如下:operator类型名(){实现转换的语句}在函数名前面不能指定函数类型,函数没有参数,所以A选项错误。17、已知在一程序中已定义函数doubleMak(intm,doublen);则下列函数中不可在同一程序中重载的是A、intMak(intm,doublen);B、doubleMak(intm,intn);C、doubleMak(doublem,intn);D、doubleMak(intn);标准答案:A知识点解析:本题考查函数重载相关知识,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。返回值类型对区别重载函数没有意义。所以答案为A选项。18、关于赋值运算符=的重载,下列表述中错误的是A、=的重载函数必须且只能有一个参数B、一个类即使没有重载=,也可以用=为该类的对象赋值C、为了实现像"x=y=z;"这样的连续赋值,=的重载函数的返回值必须声明为引用D、=可以重载为一个类的友元函数标准答案:D知识点解析:本题考查赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以D选项错误。19、下面是重载为非成员函数的运算符函数原型,其中错误的是A、MyClassoperator*(MyClass);B、MyClassoperator+(MyClass,int);C、MyClass&operator-=(MyClass&,MyClass);D、MyClass&operator=(MyClass&,MyClass);标准答案:D知识点解析:本题考查赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以D选项错误。20、下列运算符中,不能被重载的是A、::B、=C、[]D、++标准答案:A知识点解析:本题考查运算符重载,不能重载的运算符只有5个:.、.*、::、sizeof、?:。所以选择A选项。21、用于定义类的必不可少的C++关键字是A、autoB、returnC、classD、public标准答案:C知识点解析:本题定义类的基础知识,定义类时使用的关键字为class,所以C选项正确。22、有如下类声明:classWd{inta;public:intb;intc;private:intd;protected:inte;};其中访问权限为私有的成员变量有A、a和bB、b和cC、a和dD、d和e标准答案:C知识点解析:本题考查类成员的访问控制,如果没有显式声明成员访问性质,则默认为私有,所以本题中a和d都为类的私有成员。23、有如下类声明:classTe{public:Te();//①Tete;//②Te*pte;//③voidf(Te&rte);//④};在标注号码的的四个语句中,错误的是A、①B、②C、③D、④标准答案:B知识点解析:本题考查类的定义和对象的定义,题目中定义类Te中又定义了Te类型的对象te,这样陷入循环中,所以②是错误的,答案为B选项。24、当一个派生类对象结束其生命周期时,自动做的事情是A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果派生类没有定义析构函数,则只调用基类的析构函数D、如果基类没有定义析构函数,则只调用派生类的析构函数标准答案:A知识点解析:执行派生类析构函数的顺序是:先执行派生类析构函数,再执行基类的析构函数,所以A选项正确。25、当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是A、任何B、私有C、保护或私有D、公有或保护标准答案:D知识点解析:派生类保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,私有成员不可访问,所以D选项正确。26、有如下类定义:classXX{intxdata;public:XX(intn=0):xdata(n){}};classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};其中YY类的对象所包含的数据成员的个数是A、4B、3C、2D、1标准答案:C知识点解析:派生类公用继承基类,那么基类中私有不可访问,保护成员依旧是保护成员,公有成员依旧是公有成员;保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,私有成员不可访问;私有继承那么公有成员和保护成员变为私有,私有成员不可访问。本题中派生类继承基类的私有成员,不可直接访问但是可以通过基类的成员函数使用基类的私有数据成员,加上派生类的本身的数据成员,共有2个数据成员,C选项正确。27、有如下类定义:classBag{public:Bag(strings="Small",stringcr="Black"):size(s),color(cr){}~Bag(){}private:stringsize,color;};若执行语句Bag*ptr,my,colleage[2],&sister=my;则Bag类的构造函数被调用的次数是A、2次B、3次C、4次D、5次标准答案:B知识点解析:本题考查默认析构函数,题中定义了一个对象和包含2个元素的一维对象数组,而对象指针不占用空间,对象引用也不会占用内存空间,所以不调用构造函数,那么析构函数就执行3次,答案为B。28、N610060099)有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr,stringcr):brand(br),color(cr){cout<<++count;}~MyBag(){--count;}staticintGetCount(){returncount;}private:stringbrand,color;staticintcount;};intMyBag::count=0;intmain(){MyBagone("CityLife","Gray"),two("Micky","Red");MyBag*ptr=newMyBag("Coach","Black");deleteptr;cout<A、2B、3C、1232D、1233标准答案:C知识点解析:本题考查静态数据成员和构造函数和析构函数,题目中定义了三个对象,那么一次输出count值,即123,销毁ptr后,执行析构函数,count减1,count为2,所以选项C正确。29、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/C54B、/N41/S54C、/C41/C54D、/C41/N54标准答案:D知识点解析:本题考查了常对象和常成员函数,本题中定义了常对象room1,执行room1.Print();时,引用常成员函数Print,输出/C41,执行TVroom2(54)时输出/N54,所以答案为D。30、有如下类定义:classShape{public:___________________//虚函数Draw的声明};横线处缺失的虚函数Draw的声明是A、virtualvoidDraw();B、voidvirtualDraw();C、voidDraw()virtual;D、voidDraw(virtual);标准答案:A知识点解析:本题考查虚函数的定义,在成员函数前面加上virtual时成为虚函数。A选项正确。31、有如下程序:#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正确。32、有如下函数模板:templateTsquare(Tx){returnx*x;}其中的T是A、函数形参B、函数实参C、模板形参D、模板实参标准答案:C知识点解析:本题考查模板的相关知识,属于基础知识,可知T为模板形参,所以C选项正确。33、下列函数模板的定义中,合法的是A、templateTabs(Tx){returnx<0?-x:x;}B、templateclassTabs(Tx){returnx<0?-x:x;}C、templateTabs(Tx){returnx<0?-x:x;}D、templateTabs(Tx){returnx<0?-x:x;}标准答案:A知识点解析:本题考查模板的定义,一般形式为:templateT通用函数定义,所以只有A选项正确。34、在下列表述中,用来正确表示"相对于当前位置"文件定位方式的是A、ios_base::curB、ios_base::begC、ios_base::outD、ios_base::end标准答案:A知识点解析:本题考查文件流的定位操作,属于基础知识,A选项正确。35、下列C++流的操作符中,能够设置浮点数精度的是A、setprecisionB、setwC、setfillD、showpoint标准答案:A知识点解析:本题考查浮点型数据输出精度,setprecision用来设置浮点精度,A选项正确。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共39题,每题1.0分,共39分。)1、下列叙述中正确的是A、结点中具有两个指针域的链表一定是二叉链表B、结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构C、二叉树只能采用链式存储结构D、循环链表是非线性结构标准答案:B知识点解析:具有两个指针域的链表可能是双向链表,A选项错误。双向链表是线性结构,二叉树为非线性结构,二者结点中均有两个指针域,B选项正确。二叉树通常采用链式存储结构,也可采用其他结构,C选项错误。循环链表是线性结构,D选项错误。2、某二叉树的前序序列为ABCD,中序序列为DCBA,则后序序列为A、BADCB、DCBAC、CDABD、ABCD标准答案:B知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序序列为ABCD,中序序列为DCBA,可知D为根结点,ABC为左侧结点,C为D左子结点,A为B子结点,故后序序列为DCBA,故B选项正确。3、下面不能作为软件设计工具的是A、PAD图B、程序流程图C、数据流程图(DFD图)D、总体结构图标准答案:C知识点解析:软件设计常用的工具有:图形工具:程序流程图、N-S图、PAD图、HIPO;表格工具:判定表;语言工具:PDL(伪码)。另外,在结构化设计方法中,常用的结构设计工具是结构图,故选择C选项。4、逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是A、关系模型B、谓词模型C、物理模型D、实体-联系模型标准答案:A知识点解析:逻辑数据模型也称数据模型,是面向数据库系统的模型,着重于在数据库系统一级的实现。成熟并大量使用的数据模型有层次模型、网状模型、关系模型和面向对象模型等。故A选项正确。5、运动会中一个运动项目可以有多名运动员参加,一个运动员可以参加多个项目。则实体项目和运动员之间的联系是A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。一个运动项目有很多运动员参加,而一个运动员可以参加多项运动项目,故实体项目和运动员之间的联系是多对多,A选项正确。6、堆排序最坏情况下的时间复杂度为A、O(n15)B、O(nlog2n)C、[*]D、O(log2n)标准答案:B知识点解析:堆排序属于选择类的排序方法,最坏情况时间复杂度为O(nlog2n)。故B选项正确。7、某二叉树中有15个度为1的结点,16个度为2的结点,则该二叉树中总的结点数为A、32B、46C、48D、49标准答案:C知识点解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。由16个度为2的结点可知叶子结点个数为17,则结点结点总数为16+17+15=48,C选项正确。8、下面对软件特点描述错误的是A、软件没有明显的制作过程B、软件是一种逻辑实体,不是物理实体,具有抽象性C、软件的开发、运行对计算机系统具有依赖性D、软件在使用中存在磨损、老化问题标准答案:D知识点解析:软件具有以下特点:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素。故D选项正确。9、某系统结构图如下图所示该系统结构图中最大扇入是A、0B、1C、2D、3标准答案:C知识点解析:扇入指的是调用一个给定模块的模块个数。题干系统中,第2层模块扇入均为1,第3层中功能模块3.1扇入为2,其余为1,故最大扇入为2,C选项正确。10、设有表示公司和员工及雇佣的三张表,员工可在多家公司兼职,其中公司C(公司号,公司名,地址,注册资本,法人代表,员工数),员工S(员工号,姓名,性别,年龄,学历),雇佣E(公司号,员工号,工资,工作起始时间)。其中表C的键为公司号,表S的键为员工号,则表E的键(码)为A、公司号,员工号B、员工号,工资C、员工号D、公司号,员工号,工资标准答案:A知识点解析:二维表中的行称为元组,候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。公司号唯一标识公司,员工号唯一标识员工,而雇佣需要公司号与员工号同时唯一标识,故表E的键(码)为(公司号,员工号),故A选项正确。11、下列叙述中,正确的是A、false是一个字符型常量B、false是一个字符型常量C、11是一个逻辑型常量D、1.1是一个double常量标准答案:D知识点解析:false是逻辑常量,A选项错误;’0’是字符常量,字符串常量是用双引号括起来的若干字符序列,B选项错误;11是一个整型常量,C选项错误;1.1是浮点型常量,一般按双精度处理,是double型常量,答案为D。12、有如下程序段:inti=100;while(inti=10){cout<<’*’;i--;}运行时输出"*"的个数是A、0B、100C、10D、无穷标准答案:D知识点解析:首先,程序定义了局部变量i并初始化为100,在while循环中定义了同名局部变量i并初始化为10,由变量的作用域可知while循环中的i屏蔽了while语句前的局部变量i,所以while循环体中的i初值为10;其次,由于while循环的循环条件为inti=10,每次循环都是重新定义并初始化i,条件始终为真,所以while循环将会无限执行下去,输出无穷个"*"。答案为D。13、已知数组arr的定义如下:intarr[5]={1,2,3,4,5};下列语句中输出结果不是5的是A、cout<<*arr+4<B、cout<<*arr+4<C、cout<<arr[4]<D、cout<<*(arr+1)+5<标准答案:D知识点解析:程序定义含有五个整型元素的数组arr,并初始化为:1,2,3,4,5,数组名arr为数组首地址。选项A中输出第一个元素与4之和,即1+4,结果为5;选项B、C都是输出第五个元素5;选项D中输出第二个元素与5之和,即2+5,结果为7,D错误;答案为D。14、下列选项中,不是C++关键字的是A、intB、staticC、enumD、final标准答案:D知识点解析:A选项中,int是定义整型数据的关键字;B选项中,static是定义静态数据类型的关键字;C选项中enum是定义枚举类型的关键字;答案为D。15、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=8,RED,BLACK=15};则枚举常量RED的值为A、2B、3C、9D、10标准答案:D知识点解析:枚举类型中,枚举成员可以显式初始化或隐式初始化;默认的情况下第一个枚举成员赋值为0,后面每个成员赋值比前面大1。所以枚举类型COLOR中各个成员值分别为:0,1,5,8,9,15。RED为9,答案为C。16、下列函数声明中,错误的是A、voidfun(intx=0,inty=0);B、voidfun(intx,inty=0);C、voidfun(intx=0,inty);D、voidfun(intx,inty);标准答案:C知识点解析:默认参数是通过给形参表中的形参提供明确的初始值来指定的,可以为一个或多个形参定义默认值,但是如果有一个形参具有默认值,那它右边的形参都必须有默认值(即全是默认参数)。选项C错误,形参y也必须要有默认值;答案为C。17、下列关于默认参数的叙述中,错误的是A、为形参列表中的多个参数指定默认值时,应从右至左进行设置B、若函数的所有形参都指定了默认值,则调用时可不给出实参C、C++中的默认参数可以简化对复杂函数的调用D、若要为参数指定默认值,必须在函数定义及其原型声明中同时指定标准答案:D知识点解析:既可以在函数声明中指定默认参数,也可以在函数定义中指定默认参数,但是,在一个源文件中,只能为形参指定默认参数一次,通常应在函数声明中指定默认参数。A、B、C正确,选项D错误;答案为D。18、为类MyClass重载赋值运算符时,应将其重载为类的A、静态函数B、成员函数C、友元函数D、虚函数标准答案:B知识点解析:重载赋值运算符是为了操作类的对象,静态函数不满足,选项A错误;如果类中没有重载赋值运算符,编译器将根据需求合成一个赋值运算符,所以重载赋值运算符必须是类的成员函数,以便编译器可以知道是否需要合成,选项C错误;赋值运算符不是虚函数,因为虚函数必须在基类和派生类中具有同样的形参,基类的赋值运算符有一个形参是自身类类型的引用,如果该运算符是虚函数,则每个派生类都将有一个虚函数成员函数,该成员函数定义了其中一个参数为基类对象的operator=,可能会令人混淆,选项D错误;答案为B。19、若有函数原型声明为"voidfun(int*x,int&y,intz=3);",下列叙述中,错误的是A、调用函数fun时必须给出3个实参B、函数fun中有1个指针形参C、函数fun中有1个形参有默认值D、函数fun中有1个引用形参标准答案:A知识点解析:fun函数原型声明中形参z是默认参数,所以调用函数fun时可以给出2个实参即可。选项A错误,B、C、D正确,答案为A。20、将十进制数转换为二进制数的递归函数定义如下:voidd2b(unsignedintn){if((n==0)||(n==1))cout<A、1B、2C、3D、4标准答案:D知识点解析:递归函数d2b,

温馨提示

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

评论

0/150

提交评论