版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷10(共9套)(共239题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共18题,每题1.0分,共18分。)1、有如下程序:#includeusingnamespacestd;classBase{private:voidfunl()const{cout<<“funl”;}protected:voidfun2()const{cout<<“fun2”;}public:voidfun3()const{cout<<“fun3”;}};classDerived:pmtectedBase{public:voidfun4()cormt{cout<<“fun4”;}};intmain(){Derivedobi;obj.funl();//①obj.fun2();//②obj.fun3();//③obj.fun4();//④return0;}其中有语法错误的语句是()。A、①②③④B、①②③C、②③④D、①④标准答案:B知识点解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。2、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是()。A、编辑软件B、操作系统C、教务管理系统D、浏览器标准答案:B知识点解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助管理人员控制开发进程和项目管理的工具软件。3、已知函数fun的原型为intfun(int,int,int);下列重载函数原型中错误的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);标准答案:D知识点解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。4、关于this指针的说法不正确的是()。A、不能在程序中修改this指针B、this指针可以给其他指针赋值,但不能修改this指针C、静态成员函数中没有this指针D、this指针可以被赋值标准答案:D知识点解析:this指针不能在程序中修改,不能被幅值;静态成员没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。5、有如下程序:#includeusingnamespacestd;classA{public:A(inti=0):r1(i){}voidprint(){cout<<’E’<*r1<<’-’;}voidprint(intx){cout<<’p’<*r1*r1<<’-’;}private:intr1;};intmain(){Aa1;constAa2(4);a1.print(2);a2.print();return0;}运行时的输出结果是()。A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-标准答案:D知识点解析:在主函数中创建a1对象时,调用类A的默认构造函数,其数据成员r1的值等于0。当执行a1.print(2)语句时,调用带参数的print成员函数,所以输出结果为p0-,对象a2为常成员,所以其成员变量r1的值等于4,因为常对象只能调用常成员函数,所以当执行语句a2.print()语句时,输出结果为C14-。6、有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<‘?’;}Name(char*fname){strcpy(name,fname);cout<<‘?’;)};intmain(){Namenames[3]={Name("张三"),Name("李四")};return0:}运行此程序输出符号?的个数是()。A、0B、1C、2D、3标准答案:D知识点解析:类Name有两个构造函数,在默认构造函数中,给字符数组。Flame赋窄值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,Flame[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出j个“?”符号。7、下列字符串中不能作为C++标识符使用的是()。A、WHILEB、userC、_lvarD、9stars标准答案:D知识点解析:在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。8、下列符号中不属于C++关键字的是()。A、friendB、namespaceC、continueD、byte标准答案:D知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字:namespace是定义或使用名字空间时用到的关键字;continue是终止本次循环直接开始下一次循环所用到的关键字:byte是字节的意思,它不是C++语言中的关键字。9、下列说法中错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中是public的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的标准答案:B知识点解析:公有继承中,基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以B是错误的,即选择B。10、己知函数FA调用FB,若要把这两个函数定义在同一个文件中,则()。A、FA必须定义在FB之前B、FB必须定义在FA之前C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前标准答案:D知识点解析:在C++中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本题中,当函数FA调用FB时,函数FB可以定义在FA的后面,但是FB的原型必须出现在FA的定义之前,因而选项D)为正确答案。11、有如下程序:#includeusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this;}};ostream&operator<<(ostream&s,constComplex&z){returns<<’(’<A、(1,-2)B、(2,3)C、(3,5)D、(3,1)标准答案:D知识点解析:此题考查了运算符重载应用。因为x和y都是Complex类的对象,Complex类中已经重载了+=运算符,表达式x+=y就等价与x.operator+=(y),执行后得到(3,1);接着计算cout<<(x+=y),其等价于调用operator<<(cout,(x+=y)),最后输出结果是(3,1)。12、有如下类定义:classMyClass{intb;chara;doublec;public:MyClass():c(0.0),b(0),a(’,’){}};创建这个类的对象时,数据成员的初始化顺序是()。A、a,b,cB、c,b,aC、b,a,cD、c,a,b标准答案:C知识点解析:类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。13、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;I-=2)cout<<’*’;A、24B、25C、26D、50标准答案:B知识点解析:此题考查的是for循环语句。执行循环语句,变量i从50递减,每次减2,所以循环会执行25次,输出25个‘*’。14、有如下类定义:classPoint{private;staticinthow_many;};_________how_many=0;要初始化Point类的静态成员how_many,下划线处应填入的内容是()。A、ingB、staticintC、intPoint::D、staticintPoint::标准答案:C知识点解析:此题考查的是静态数据成员的初始化。静态数据成员应在类体外进行初始化,且初始化的一般格式为:数据类型类名::静态数据成员名=初始值。15、下列函数原型声明中,错误的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);标准答案:C知识点解析:在C++中,函数在使用之前要预先声明。这种声明在标准C++中称为函数原型,函数原型给出了函数名、返回类型以及在调用函数时必须提供的参数个数和类型。其语法为:<返回类型><函数名>(<形参列表>);使用函数原型说明有两种形式:①直接使用函数定义的头部,并在后面加上一个分号;②在函数原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及次序。在选项C)中,给出了形参变量m的初值。16、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项A和B错误:公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项C错误。17、有如下4个语句:①cout<<’A’<<setfill(’*’)<<left<<setw(7)<<’B’<<endl;②cout<<setfill(’*’)<<left<<setw(7)<<’A’<<’B’<<endl;③cout<<’A’<<serfill(’*’)<<right<<setw(7)<<’B’<<endl;④cout<<setfill(’*’)<<right<<setw(7)<<’A’<<’B’<<endl;其中能显示A******B的是()。A、①和③B、①和④C、②和③D、②和④标准答案:C知识点解析:此题考查C++流的使用。setfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐:fight是使输出数据在指定宽度内右对齐。18、为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是()。A、+B、=C、<<D、++标准答案:B知识点解析:在C++中,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共35题,每题1.0分,共35分。)1、对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需要比较次数为()。A、1B、2C、3D、4标准答案:C知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这时两者相等,即查找成功。2、下列描述中,正确的是()。A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。3、开发大型软件时,产生困难的根本原因是()。A、大型系统的复杂性B、人员知识不足C、客观世界千变万化D、时间紧、任务重标准答案:A知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。4、两个或两个以上的模块之间关联的紧密程度称为()。A、耦合度B、内聚度C、复杂度D、连接度标准答案:A知识点解析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。5、下列关于线性表的叙述中,不正确的是()。A、线性表可以是空表B、线性表是一种线性结构C、线性表的所有结点有且仅有一个前件和后件D、线性表是由n个元素组成的一个有限序列标准答案:C知识点解析:线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。6、设有如下关系表:则下列操作正确的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=R∪S标准答案:C知识点解析:T就是关系R中有的,同时S中也有的有序组(4、5、6),即交运算(∩)。7、以下描述中,不是线性表顺序存储结构特征的是()。A、可随机访问B、需要连续的存储空间C、不便于插入和删除D、逻辑相邻的数据物理位置上不相邻标准答案:D知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。8、在三级模式之间引入两层映像,其主要功能之一是()。A、使数据与程序具有较高的独立性B、使系统具有较高的通道能力C、保持数据与程序的一致性D、提高存储空间的利用率标准答案:A知识点解析:数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。9、下列方法中,属于白盒法设计测试用例的方法的是()。A、错误推测B、因果图C、基本路径测试D、边界值分析标准答案:C知识点解析:白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。10、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。A、MyClass(MyClassx);B、MyClass(MyClass&x);C、MyClass(&x);D、MyClass(x);标准答案:B知识点解析:拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是&x。所以本题答案是B。11、下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false,则横线处应填上()。Boolfun(char*str){inti=0,d=0;while(str[j])j++;for(j--;i<j&&str[i]=str[j];i++j--);reruni______j;}A、>==B、‖C、&&D、<=标准答案:A知识点解析:while循环取串长度,赋值给j,然后在for循环中由串两边开始向中间进行字符比较,当最后i和j标识字符位置的变量相等,那么奇数个字符,或者i大于j时那么偶数个字符,则表示是对称的。12、有以下程序,输出结果()。#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):re(r),im(i){}doublerealoconst{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain(){Complexa=Complex(1,1)+Complex(5);cout<<a.real()<<’+’<<a.imag()<<’i’<<end1;return0;}A、6+iB、2i+5C、6+1iD、1i+5标准答案:C知识点解析:由主函数入手,调用“Complexa=Complex(1,1)+Complex(5);”,实际是“Complexa=Complex(1,1)+Complex(5,0);”,调用“returnComplex(re+c.re,im+c.im);”结果为:6+1i。13、有以下程序段:#include<iostream.h>#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=MAX(i,j)*10;cout<<k<<end1;}程序执行后的输出结果是()。A、15B、100C、150D、10标准答案:C知识点解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>y)?(x):(y)是当x大于y时取x,否则取y。当i=10,j=15时,“MAX(i,i)”的值为15,所以“k=MAX(i,j)*10;”答案为:150。14、定义如下枚举类型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表达式Wednesday=Friday的值是()。A、falseB、trueC、2D、异常标准答案:B知识点解析:enum<枚举类型名>{<枚举元素表>);其中:关键词“enum”表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。本题中的枚举类型中的数据值Wednesday为2,而Friday的值赋值为2,所以判断Wednesday等于Friday的表达式值为真,即true。15、以下程序运行后的输出结果是()。#include<iostream.h>voidmain(){charaH=’’abbcabbcabbc’’;inti=0,j=0,k=0;while(a[i]){if(a[i]==’a’)j++;if(a[i]==’b’)k++;i++;}cout<<j<<’’’’<<k<<end1;}A、2,6B、3,5C、4,7D、3,6标准答案:D知识点解析:程序中首先定义字符数组a,然后在while循环中统计字符a和b的个数。其中i记录a的个数,k记录b的个数。第一个if语句是当第i个字符为a时,i加1;第二个if语句是当第i个字符为b时,k加1。16、假定a=3,下列程序的运行结果是()。#include<iostream.h>intfun(intn);voidmain(){cout<<’’Pleaseinputanumber:’’;inta,result=0;cin>>a;result=fun(a);cout<<result<<end1;}intfun(intn){iIltp=1,result=0;tbr(inti=1;i<=n;i++){p*=i;result+=p;}returnresult;}A、4B、8C、9D、20标准答案:C知识点解析:由程序main主函数入手,调用fun函数获得返回值result输出。题目中假定a=3,即调用语句fun(a.)中的输入参数为a,进入fun函数,在for循环中当i小于等于n,即输入参数3时,循环3次执行“p*=i;result+=p;”语句。即执行三次p=p*i,result=result+p,result的结果为9。返回的fun函数结果为9,即“cout<<result<<end1;”输出9。17、下列关于指针的运算中,()是非法的。A、两个指针在一定条件下,可以进行相等或不等的比较运算B、可以将一个空指针赋值给某个指针C、一个指针可以加上两个整数之差D、两个指针在一定条件下可以相加标准答案:D知识点解析:指针变量如果指向同一个数组的元素,则可以进行比较,所以A是正确的。指针变量的赋值就是将一个变量地址赋给一个指针变量。并且指针变量可以是空值,即该指针不指向任何变量。B同样也是正确的。指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。即C也是正确的。如果两个指针指向同一个数组元素,两个指针是可以相减的,标识两个指针之间的元素个数。但是它们是不可相加的。18、下面程序的输出结果为()。#include<iostream.h>voidmain(){intx;int&y=x;//变量引用y=99;cout<<’’x=’’<<x<<end1;}A、x=9913)x=9B、x=0C、异常标准答案:A知识点解析:程序中的“int&y=x;”语句中的“&”引用运算符。&y=x语句可以理解为y具有x的地址,所以y的值99,x的值也是99,所以答案是x=99。19、下i面程序输出的结果为()。#include<iostream.h>voidfun(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=1;n=2:fun(m,n);cout<<m<<’’’’<<n<<end1:}A、12B、21C、22D、程序有错误标准答案:A知识点解析:函数fun中定义的参数a和b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也被释放。并且函数fun没有返回值,它做的交换操作,并不能影响实际参数m和n。所以输出值保持不变,仍然是1和2,即输出:12。20、存在定义inta[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的()?A、x=*pa;B、x=*(a+1);C、x=*(pa+1);D、x=a[1];标准答案:A知识点解析:选项B、C、D都是获取a(1)元素,而选项A是获取a(0)的元素。21、对数组名作函数的参数,下面描述正确的是()。A、数组名作函数的参数,调用时将实参数组复制给形参数组B、数组名作函数的参数,主调函数和被调函数共用一段存储单元C、数组名作参数时,形参定义的数组长度不能省略D、数组名作参数,不能改变主调函数中的数据标准答案:B知识点解析:数组作为参数实参传递的是数组的首地址。所以主调函数和被调函数共用一段存储单元。22、关于静态成员的描述中,错误的是()。A、静态成员可分为静态数据成员和静态成员函数B、静态数据成员定义后必须在类体内进行初始化C、静态数据成员初始化不使用其构造函数D、静态数据成员函数中不能直接引用非静态成员标准答案:C知识点解析:可以在类的构造函数中对静态数据成员进行初始化。23、下列程序的输出结果是()。#mclude<iostream>usingnamespacestd;voidfun(inn&r){r*=2;}intmain(){intn=50;fun(n);cout<<n<<end1;return0;}A、0B、20C、50D、100标准答案:D知识点解析:题中主程序中首先定义整型变量n=50,然后调用函数fun,实际参数为n。函数fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以2。24、下列说法中错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中仍是private的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的标准答案:B知识点解析:此题考查的是继承时基类成员属性改变。选项B中,公有继承时基类中的private成员在派生类中不是private的,而是不可访问的。所以选项B错误;其他选项叙述均正确。25、多继承的构造顺序可分为如下四步:①所有非虚基类的构造函数按照它们被继承的顺序构造②所有虚基类的构造函数按照它们被继承的顺序构造③所有子对象的构造函数按照它们声明的顺序构造④派生类自己的构造函数体这四个步骤的正确顺序是()。A、④③①②B、②④⑨①C、②①③④D、③④①②标准答案:C知识点解析:多继承派生类的构造顺序是:首先调用虚基类的构造函数,然后调用非虚基类的构造函数按照它们被继承的顺序构造,其次调用子对象的构造函数,最后是派生类构造函数中的内容。26、设有以下定义和程序:#include<iostream.h>classA1{public:voidshow1(){cout<<’’classA1’’<<end1;}};classA2:publicA1{public:voidshow2(){tout<<’’classA2’’<<end1;}};classA3:protectedA2{public:voidshow3(){cout<<’’classA1’’<<end1;}};voidmain(){A1obj1;A2obj2;A3obj3;}则以下不合语法的调用语句是()。A、obj1.show1();B、obj2.show1();C、obj3.show1();D、obj2.show2();标准答案:C知识点解析:由于classA3:protectedA2,所以类A3的对象obj3不能直接访问基类A1的成员函数show1(),所以选项C是错误的;其他选项均有访问的权限,正确。27、下面程序的输出结果是()。#include<iostream>#include<math.h>usingnamespacestd;classpoint{private:doublex:doubley;public:point(doublea,doubleb){x=a;y=b;}frienddoubledistances(pointa,pointb);};doubledistances(pointa,pointb){returnsqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}intmain(){pointp1(1,2);pointp2(5,2);cout<<distances(p1,p2)<<end1;return0;}A、2B、4C、8D、16标准答案:B知识点解析:分析题目,最终要实现的结果是sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)),其中的a.x和a.y分别指p1(1,2)中的1和2。这样容易得到结果是(1-5)*(1-5)+(2-2)*(2-2)=16,再开方得到结果为4。28、有以下程序:#include<iostream>usingnamespacestd;classR{public:R(intr1,intr2){R1=rl;R2=r2;}voidprint();Voidprint()const;private:intR1,R2;};voidR::print(){cout<<Rl<<’’,’’<<R2<<end1;}voidR::print()const{cout<<R1<<’’,’’<<R2<<end1;}intmain(){Ra(5,4);constRb(20,52);b.print();return0;}执行后的输出结果是()。A、5,4B、4,5C、20,52D、52,20标准答案:C知识点解析:此题中,语句Ra(5,4)调用构造函数R(intr1,intr2)但未有输出结果;b.print();调用常成员函数(因为b是常对象)voidprin()const,输出结果是20,52。29、下列程序的输出结果是()。#include<iostream>usingnamespacestd;template<typenameT>Tfun(Ta,Tb){return(a<=b)?a:b;}intmain(){cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;return0;}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。30、关于模板,下列说法不正确的是()。A、用类模板定义一个对象时,不能省略实参B、类模板只能有虚拟类型参数C、类模板本身在编译中不会生成任何代码D、类模板的成员函数都是模板函数标准答案:B知识点解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参:类模板的成员函数都是模板函数。C++中可以为类模板的参数设置默认值,所以选项B错误。31、如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用()关键字来修饰。A、constB、staticC、voidD、class标准答案:D知识点解析:如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用class关键字来修饰。32、下列关于this指针的叙述中,正确的是()。A、this指针是一个隐含指针,它隐含于类的成员函数中B、只有在使用this时,系统才会将对象的地址赋值给thisC、类的友元函数也有this指针D、this指针表示了成员函数当前操作的数据所属的对象标准答案:D知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。33、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C错误。34、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。35、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共21题,每题1.0分,共21分。)1、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、—369B、369C、0.369D、整数集合{1,2,3,4,5)标准答案:B知识点解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项A)和选项C),选项D)是整数集合,所以也排除。2、关于静态成员的描述中,错误的是()。A、静态成员可分为静态数据成员和静态成员函数B、静态数据成员定义后必须在类体内进行初始化C、静态数据成员初始化不使用其构造函数D、静态数据成员函数中不能直接引用非静态成员标准答案:C知识点解析:可以在类的构造函数中对静态数据成员进行初始化。3、下面不属于软件设计阶段任务的是()。A、软件总体设计B、算法设计C、制定软件确认测试计划D、数据库设计标准答案:C知识点解析:软件设计阶段总体分为两部分:概要设计和详细设计,此阶段的主要任务就是将需求规格说明文档转换为软件设计文档,将需求阶段提出的问题,一一解释,形成详细设计文档,并根据功能要求,定制相应数据结构、各种流程图等,为下一步编码做准备。4、算法的空间复杂度是指()。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A。5、以下()不属于对象的基本特征。A、继承性B、封装性C、分类性D、多态性标准答案:A知识点解析:对象具有如下特征:.标识惟一性。指对象是可区分的。.分类性。指可以将具有相同属性和操作的对象抽象成类。.多态性。指同一个操作可以是不同对象的行为。.封装性。从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法。.模块独立性好。对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。6、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗余度大;数据库系统管理阶段共享性大,冗余度小。7、程序调试的任务是A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软什中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行并找出错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。8、如果表达式一x/y中的“一”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为()。A、operator/(x.operato--(),y);B、operator/(operator--(x),y);C、x.operator--().operator/(y);D、y.operator/(operator--(x));标准答案:B知识点解析:运算符重载实际上时函数的重载。重载运算符的一般格式:函数类型operator运算符名称(参数表)。重载运算符之后:函数operator+重载运算符“+”。“一”重载为“operator-;”,“/”重载为“operator/”。另外重载不能改变运算的优先级,-x/y计算-x后,除以y,所以表达式改写为:operator/(operator-(x),y);。9、有如下程序段:inti=4;intj=1;intmain(){inti=8,j=i;eout<<i<<j<<end1;}运行时的输出结果是()。A、44B、4lC、88D、81标准答案:C知识点解析:这个程序定义了全局整型对象i和i,其值分别等于4和1。而在主函数中定义了局部整型对象i和.j,i值赋予8,再把i值赋给i,接着输出i和j的值,所以其结果为88。这个题日要注意的一点是,全局整型对象i和i和主函数中定义了局部整型对象i和j,在计算机内存中表示的是不同的存储单元。它们的值是独自存放的,互相不同。10、在函数中,可以用auto、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。A、autoB、externC、registerD、static标准答案:A知识点解析:此题考查的是存储类型。C++语言变量的存储类型分为如下几种类型:auto一一一函数内部的局部变量;static一一一静态存储分配;extern一一一全局变量;register一一一变量存储在硬件寄存器中。11、下面关于虚函数的描述中正确的是()。A、虚函数是一个静态成员函数B、虚函数是一个非成员函数C、虚函数既可以在函数说明时定义,也可以在函数实现时定义D、派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型标准答案:D知识点解析:在基类中用vinual声明成员函数为虚函数,所以AB错误。在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同。12、有如下程序:#includeusingnamespacestd;classPair{intm;intn;public:Pair(inti,intj):m(i),n(j){}booloperator>(Pajrp)const;∥须在类体外给出定义};intmain(){Pairp1(3,4),p2(4,3),p3(4,5);cout<<(p1>p2)<<(p2>p1)<的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是()。A、boolPair∷operator>(Pairp)const{if(m!=p.In)returnm>p.m;returnn>p.n;}B、boolPair∷operator>(Pair.p){if(m!=p.m)retumm>p.m;return>p.n;}C、boolPair∷operator>(Pairp)const{if(m>p.m)retumtrue;returnn>p.n;}D、boolPair∷operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}标准答案:A知识点解析:按照比较规则:首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。这条规则的用C++写出来就是选项A。13、有如下程序段:inti=5;while(inti=0){cout<<’*’;i--;}运行时输出’’*’’的个数是()。A、0B、1C、5D、无穷标准答案:A知识点解析:因为while循环中,因为i的值等于0,所以while循环体一次也不执行。因而运行时输出“*”的个数是0。14、有如下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass0{cout<<4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0:}运行时的输出结果是()。A、112444B、11114444C、121444D、11314444标准答案:A知识点解析:当创建MyClass类对象obj1(1)和obj2(2)时候,调用类构造函数会输出两个1,然后创建类对象obj3(obj(1))时,会调用拷贝类构造函数,输出一个2,然后当main函数结束时候,调用三个对象的析构函数会输出三个4。15、下列有一维数组a的定义中,语法正确的是()。A、inta(10);B、intn=7,a[n];C、intn;cin>>n;inta[n];D、constintsize=10;inta[size];标准答案:D知识点解析:定义一维数组的一般格式为:类型标识符数组名[常量表达式];常量表达式的值表示元素的个数,即数组长度。常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。也就是说,C++不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。16、有如下类定义:ClassTest{chara;constcharb;public:Test(charc){a=c;b=c;)//第1行voidf(chara)const{this->a=a;}//第2行voidg(charb){this->b=b;)//第3行charh()const{returna;}//第4行};编译时没有错误的行是()。A、第1行B、第2行C、第3行D、第4行标准答案:D知识点解析:类Test中的常成员函数h()返回数据成员a的值。17、有如下两个类定义:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一个成员变量的定义是错误的,这个变量是()。A、vlB、v2C、v3D、v4标准答案:C知识点解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。18、若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。A、Data+(Data);B、Dataoperator+{Data};C、Data+operator{Data};D、operator+(Data,Data);标准答案:B知识点解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。运算符函数的函数名是由运算符前加关键字operator构成的。19、下列关于文件流的描述中,正确的是()。A、文件流只能完成针对磁盘文件的输入和输出B、建立一个文件流对象时,必须同时打开一个文件C、若输入流要打开的文件不存在,将建立一个新文件D、若输出流要打开的文件不存在,将建立一个新文件标准答案:D知识点解析:对于输入文件流类ifstream,默认的打开模式是iosbase::in,当以这种方式打开文件而文件又不存在时,通过fail()可测试打开失败(返回值为true),对于输出文件流类ofstream,默认的打开模式是ios_base::out,当以这种方式.打开文件而文件又不存在时,将自动建立新文件。20、下列类模板的定义中语法格式错误的是()。A、template<classT>classBuffer{/*…*/};B、template<typenameT>classBuffer{/*…*/};C、template<classT1,classT2>classBuffer{/*…*/};D、template<T>classBuffer{/*…*/};标准答案:D知识点解析:定义类模板的一般形式是:template<类型名参数名1,类型名参数名2,…>class类名{类声明体};模板的类型参数由关键字class或关键字typename及其后的标识符构成。在模板参数表中关键字class和typename的意义相同。21、若磁盘上已存在某个文本文件,其全路径文件名为d:\ncre\test.txt,下列语句中不能打开该文件的是()。A、ifstreamfile(’’d:\ncre\test.txt’’);B、ifStreamfile(’’d:\ncre\\test.txt’’);C、ifstreamfile;file.open(’’d:\\ncre\\test.txt’’);ifstream(’’d:\\ncre\\test.txt’’);D、ifstream*pFile=new标准答案:A知识点解析:此题考查的是转义字符。在字符常量或字符串中,以“\”开头的一系列字符被看做是一个转义字符。要表示“\”字符,必须使用转义字符“\\”。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共21题,每题1.0分,共21分。)1、数据的存储结构是指()。A、存储在外存中的数据B、数据所占的存储空间量C、数据在计算机中的顺序存储方式D、数据的逻辑结构在计算机中的表示标准答案:D知识点解析:在对数据进行处理时,各数据元素在计算机中的存储关系,即为数据的存储结构。2、下列运算符不能重载为友元函数的是()。A、=()()一>B、+一++一一C、><>=<=D、+=一=*=/=标准答案:A知识点解析:关于运算符重载为友元函数有如下规定:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符“=、()、[]、一>”不能重载为类的友元函数。所以本题答案为A。3、下列叙述中正确的是A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。4、软件是指()。A、程序B、程序和文档C、算法加数据结构D、程序、数据与相关文档的完整集合标准答案:D知识点解析:计算机软件是计算机系统中与硬件相互依存的另一部分.是包括程序、数据与相关文档的完整集合。软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。5、关于静态成员的描述中,错误的是()。A、静态成员可分为静态数据成员和静态成员函数B、静态数据成员定义后必须在类体内进行初始化C、静态数据成员初始化不使用其构造函数D、静态数据成员函数中不能直接引用非静态成员标准答案:C知识点解析:可以在类的构造函数中对静态数据成员进行初始化。6、有如下程序:#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;_______return0:}若程序的输出结果是:123则程序中横线处的语句是()。A、cout<<fun1.value()<<Fun:i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<<fun2.value()<<Fun::i;D、cout<<fun2.value()<<Fun::i<<fun1.value();标准答案:A知识点解析:此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部变量),所以,选项A中fun1.value()的返回值是1,Fun::i引用的是外部变量会输出2;fun2.value();会调用常成员函数intvalue()const{returni+l;}使得外部静态变量i的值增加为3,故输出3。7、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:根据数据之间的联系方式,可以把数据库分为层次型、网状型和关系型数据库,它们是根据数据之间的联系方式来划分的。8、下列程序用来判断数组中特定元素的位置所在,则输出结果为()。#include<conio.h>#include<iostream.h>intfun(int*p,intn,int*j){inti;*j=0;for(i=0;i<n;i++)if(p[*j]<p[i])*j=i;returnp[*j];}voidmain(){inta[10]={1,3,9,O,8,7,6,5,4,2};intj;fun(a,10,&j);cout<<j<<’,’<<a[j];}A、2,9B、3C、9D、3,9标准答案:A知识点解析:由程序中的主函数main入手,调用fun函数。其中第一个实参为数组a的名字,数组名作为实参,传递的是数组的起始地址。所以在fun函数中指针p指向了数组的第一个元素a[0]。另外实参整型j传递的是引用,也就是j的地址。在fun函数中在for循环中,依次将当前元素p[i]与j指针值为标识的p[*j]进行比较,取较大的。最后循环后的结果就是p[*j]存放数组中的最大值,并且指针j为该值的标识位。可以看出数组的最大值是9标识位为2。9、有如下类定义:classXX{intxx;public:xx0:xx(0){cout<<‘A’;}XX(intn):xx(n){cout<<’B’;}};classYY:publicXX{intyy;public:YY():yy(0){cout<A、YYyl(0,0);B、YYy2(1);C、YYy3(0);D、YYy4;标准答案:D知识点解析:考查的是类的继承。选项A的执行结果为。BO,建立YY的对象vl,首先调用其构造函数,YY继承于XX所以先调用的为XX的构造函数,根据输入的参数可知输出B,然后执行YY的构造函数输出0;同理,选项B的执行结果为B1,选项C的执行结果为BO。10、有如下程序:#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。11、下列语句中,错误的是()。A、constintbuffeF256;B、constdouble*point;C、intconstbuffeF256;D、double*constpoint;标准答案:D知识点解析:此题考查的是常指针和指针常量的概念。常指针是指向一个常量的指针变量,指针自身的内容可以改变但指针指向的内容不可以改变;指针常量是一个常量,即不能修改指针自身的内容,但可以通过指针修改其所指向的内容。D选项中指针常量point没有初始化,编译无法通过。12、已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则()。A、FA必须定义在FB之前B、FB必须定义在FA之前C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D、若EB定文在FA之后,则FB的原型必须出现在FA前定义之前标准答案:D知识点解析:在c++中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本题中,当函数FA调用FB时,函数FB可以定义在FA的后面,但是FB的原型必须出现在FA的定义之前,因而选项D)为正确答案。13、已知函数fun的原型为intfun(int,int,int),下列重载函数原型中错误的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);标准答案:D知识点解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。14、必须用对大括号括起来的程序段是()。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:此题考查的是语句块和函数。if语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来;switch语句中的case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来:函数的函数体必须用一对大括号括起来。15、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assPoint{intx,y;public:Point(intx1=0,inty1=0):x(x1),y(y1){}intget(){retumx+y;}};c1assCirc1e{Pointcenter;intradius;public:Circ1e(intcx,intcy,intr):center(cx,cy),radius(r){}intget(){returncenter.get()+radius;}};intmain(){Circ1ec(3,4,5);cout<<c.get0<<end1;return0:}运行时的输出结果是()。A、5B、7C、9D、12标准答案:D知识点解析:根据类Point和类Circle的定义可知,类Circle的实例c(3,4,5)的成员函数c.get()返回值为3+4+5=12。16、若有定义“intx=4,y=5;”,则表达式“y>x++?x--:y++”的值为()。A、3B、4C、5D、6标准答案:C知识点解析:在表达式“y>x++?x--:y++”中,由于自加(++)运行符的优前级高于比较运算符(>),所以首先进行自加运算,即变量x的值前自加1,等于5。此时表达式y>x不成立,所以整个表达式的值等于y++的值,由于y++是后自加运算,所以其值等于5。17、在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译。这说明()。A、f()是基类的私有成员B、f()是基类的保护成员C、派生类的继承方式为私有D、派生类的继承方式为保护标准答案:A知识点解析:在派生类对基类的三种继承形式中,都无法对基类的私有成员访问A正确。在B中,三种继承方式都能访问基类的保护成员,故B不正确。C选项的情况在f()是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样D也不一定正确。18、有如下程序:#incLude<iostream>usingnamespacestd;c1assA{public:A(){cout<"A’;}~A(){cout<<’C’;}};c1assB:publicA{public:BO{cout<<’G’;}~BO{couK<’T’;}};intmain0{Bobj;return0;}运行这个程序的输出结果是()。A、GATCB、AGTCC、GACTD、AGCT标准答案:B知识点解析:派生类B是由基类A公开继承而来,所以在创建类B的obj对象时,首先执行基类A的构造函数A(),输出A,再执行派生类B的构造函数BO,输出G,当程序结束时,首先执行派生类的析构函数~BO,输出T,再执行基类A的析构函数~A(),输出C。19、下列运算符函数中肯定不属于类FunNumber的成员函数的是()。A、intoperator-(FunNumber);B、FunNumberoperator-();C、FunNumberoperator-(int);D、.intoperator-(FunNumber,FunNumber);标准答案:D知识点解析:此题考查的是运算符“-”的重载。“-”运算符有一元和二元两种,且均可以重载为成员函数和非成员函数。运算符重载为成员函数时,形参个数一般为运算符元数减1;重载为非成员函数时,形参个数一般和运算符元数相等。所以,“-”运算符重载为成员函数时,参数可以是0个或1个;而重载为非成员函数时,参数个数可以是1个或2个。所以D选项,肯定是重载为非成员函数。20、在C++中,cin是一个()。A、类B、对象C、模板D、函数标准答案:B知识点解析:cin为istream流类的对象。21、有如下程序:#include#includeusingnamespacestd;intmain(){ints[]={123,234};cout<A、123234B、***123234C、***123***234D、***123234***标准答案:B知识点解析:在输出语句中定义了输出的格式是字符宽度为6,并且向右对齐,不足的位用‘*’补齐。在C++中,输出格式的发置只对第一次输出有效,在完成了一个数据的输出后,宽度设置自动恢复为0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组s[0]中的元素时,按照规定的格式输出,其结果为***123,当输出s[1]时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共21题,每题1.0分,共21分。)1、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。2、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选项也正确。3、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自项向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化,限制使用goto语句。4、下列关于析构函数的描述中,错误的是()。A、析构函数可以重载B、析构函数由系统自动调用C、每个对象的析构函数只被调用一次D、每个类都有析构函数标准答案:A知识点解析:一般情况下,析构函数在对象的生存周期即将结束的时候由系统自动调用。在调用完成之后,对象也就消失了,相应的内存空间也被释放。析构函数没有参数,因此析构函数不能重载,一个类中只能定义一个析构函数。5、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在SC中学号和课号的组合可以对元组进行唯一的标识。6、下列存储类标识符中,可见性与存在性不一致的是()。A、外部类B、自动类C、内部静态类D、寄存器类标准答案:C知识点解析:可见性是函数内部,存在整个程序中,第二次调用值不变。7、有如下程序:#includeusingnamespacestd;intmain(){.inta[6]={23,15,64,33,40,58);ints1,s2;s1=s2=a[0];for(int*p=a+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;}cout<<s1+s2<<end1;return0;}运行时的输出结果是()。A、23B、58C、64D、79标准答案:D知识点解析:变量s1和s2的初值都等于23,那么在执行第一次for循环时,*p的值等于15,它小于23,所以把15赋给变量s1;执行第二次for循环时,*p的值等于64,它大于23,所以把64赋给变量s2;而数组a中a[2]后面的元素的值都大于15,小于64,因而变量s1,s2的值不会再发生变化,最终值为15+64=79。8、要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是()。A、MyClassp=MyClass;B、MyClassp=newMyClass;C、MyClass&p=newMyClass;D、MyClassa,&p=a;标准答案:D知识点解析:在选项D中,定义了MyClass类的一个对象a和引用变量p,并且声明p初始化为对a的引用。9、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是,()。Samplea[2],*P=newSample;A、0B、1C、2D、3标准答案:D知识点解析:在C++中,声明一个类对象时,编译程序需要调用类的构造函数为对象分配存储空间,进行必须的初始化。在本题的这条语句中,声明了一个Sample类型的包含2个数组元素的数组a[2],一个指向类Sample对象的指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2024学年初中生物备课组工作计划
- 班主任工作计划锦集
- 2024新入职员工工作计划
- 2024年春季期教学工作计划
- 学校办公室工作计划范文
- 2024年中班第一学期个人计划范文
- 培训班之美食烹饪计划
- 幼儿园大班学期工作计划024年
- 儿童英语学习计划
- 五年级品德教学计划
- 国家开放大学《管理英语2》边学边练参考答案
- ZVB网络分析仪的使用操作手册
- 小学美术《蝴蝶落我家.1》优质教案.教学设计
- (最新整理)【大航海时代4】全宝物~地图截图~坐标~条件~详解
- 《手机摄影》全套课件(完整版)
- 《一般现在时公开课》优秀课件
- JGJ_T231-2021建筑施工承插型盘扣式钢管脚手架安全技术标准(高清-最新版)
- 表面处理阳极氧化检验规范
- 交通工程精细化施工质量控制及验收标准
- 美国UOP化工英语专业术语
- 幼儿园食物中毒应急预案流程图
评论
0/150
提交评论