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

下载本文档

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

文档简介

国家二级(C++)笔试模拟试卷6(共9套)(共444题)国家二级(C++)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、程序设计方法要求在程序设计过程中A、先编制出程序,经调试使程序运行结果正确后再画出程序的流程图B、先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释C、先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释D、以上三种说法都不对标准答案:D知识点解析:程序设计的过程应是先画出流程图,然后根据流程图编制出程序,所以选项A错误。程序中的注释是为了提高程序的可读性,使程序易于理解、易于维护,注释必须在编制程序的同时加入,所以,选项B和C错误。本题的正确答案为D。2、结构化程序设计主要强调的是()。A、程序的规模B、程序的效率C、程序设计语言的先进性D、程序的易读性标准答案:D知识点解析:程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。3、在数据库设计中,将E-R图转换为关系模式的过程属于()。A、需求分析阶段B、逻辑设计阶段C、概念设计阶段D、物理设计阶段标准答案:B知识点解析:数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设计。其中逻辑设计的主要工作是将E-R图转换为关系模式。4、下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“<<left”,则输出效果将发生变化的是A、eout<<left<<setfill(’*’)<<357;B、cout<<left<<setw(5)<<357;C、eout<<left<<setw(5)<<"ABCDE";D、eout<<left<<"ABCDE";标准答案:B知识点解析:暂无解析5、下列数据结构中,属于非线性结构的是A、循环队列B、代链队列C、二叉树D、带链栈标准答案:C知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系。根据各种结构的定义可知,二叉树是一种非线性结构。6、检查软件产品是否符合需求定义的过程称为A、确认测试B、集成测试C、验证测试D、验收测试标准答案:1知识点解析:确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。7、下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是A、选择B、连接C、投影D、并标准答案:2知识点解析:连接运算是对两个关系进行的运算,其意义是从两个关系的笛卡尔积中选出满足给定属性间一定条件的那些元组。而两个关系的笛卡尔积中的属性个数是两个原关系中的属性个数之和。即两个关系经连接运算后得到的新关系中属性个数多于原来关系中属性个数。正确答案是B。8、下列对重载函数的描述中,()是错误的。A、重载函数中不允许使用默认参数B、重载函数中编译是根据参数表进行选择C、不要使用重载函数来描述毫无相干的函数D、构造函数重载将会给初始化带来多种方式标准答案:1知识点解析:暂无解析9、以下程序段的执行结果是()。inta,y:a=10;y=10do{a+=2:y+=a;cout<<“a”=“<<a<<”,“<<”y=“<<y<<”\n”;if(y>20)break;}while(a<=14);A、a=12,y=12B、a=12,y=12a=14,y=1a=16,y=28C、a=12,y=12D、a=12,y=12a=14,y=26a=14,y=44标准答案:4知识点解析:暂无解析10、数据处理的最小单位是A、数据B、数据元素C、数据项D、数据结构标准答案:4知识点解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C。二、选择题(本题共25题,每题1.0分,共25分。)11、关于面向对象的程序设计方法,下列说法正确的是A、“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B、“多态性”指的是对象的状态会根据运行时要求自动变化C、基类的私有成员在派生类的对象中不可访问,也不占内存空间D、在面向对象的程序设计中,结构化程序设计方法仍有着重要作用标准答案:D知识点解析:本题考核C++程序的基本框架。“封装性”指将数据和算法捆绑成一个整体,而不是将不同类型的相关数据组合在一起C++中的多态性是指一个面向对象的系统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务。基类的私有成员在派生类的对象中不可访问,但是也占据内存空间。C++同时支持结构化和面向对象两种程序设计的基本框架,所以在面向对象的程序设计中,结构化程序设计方法仍有着重要作用。12、下列关于运行符重载的描述中,正确的是A、运算符重载可以改变操作数的个数B、运算符重载可以改变操作数的优先级C、运算符重载可以改变运算符的结合性D、运算符重载可以使运算符实现特殊功能标准答案:D知识点解析:本题考核运算符重载的概念。C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator。运算符重载就是赋予已有的运算符多重含义。C++中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能。但是用户重新定义运算符,不改变原运算符的操作符个数、优先级和结合性.同时运算符重载后,也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符。所以A,B,C选项的描述都是错误的。13、对虚函数的调用()。A、一定使用动态联编B、必须使用动态联编C、一定使用静态联编D、不一定使用动态联编标准答案:D知识点解析:虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函数声明只能出现在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必须由成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚函数,则联编在编译过程中认为是静态联编。14、解决类继承中产生的二义性的方法不包括A、使用作用域运算符限定访问的成员函数B、在派生类中定义同名函数,且参数表必须和基类的保持一致C、在派生类中定义同名函数,且参数表可以和基类的不同D、采用虚基类解决多重继承中的共同基类产生的二义性标准答案:C知识点解析:继承中的二义性主要表现在多重继承中具有多条继承路径时,派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的成员函数的方法可以解决之,故选项A排除。在选项B和C中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项C是正确答案。关于选项D,虚基类是C++中解决二义性的一种有效手段。15、每个C++程序中都必须有且仅有一个A、类B、预处理命令C、主函数D、语句标准答案:C知识点解析:每个C++程序中都要有且仅有一个主函数,该函数是程序的人口,而语句、预处理命令和函数及类在程序中都可以有多个。16、有如下类定义:classFun{public:Fun(intv):value(v){},/①~Fun(){}//②private:Fun{}//③intvalue=0;//④};其中存在语法错误的行是()。A、①B、②C、③D、④标准答案:D知识点解析:C++中,不允许声明类成员变量的时候进行初始化,而在新的ANSIC++标准中,可以对常整型数值在定义时进行初始化,所以语句4是错的。17、要把多个目标程序组成可执行文件,需要使用()。A、编辑程序B、链接程序C、调试程序D、编译程序标准答案:2知识点解析:C++是以编译方式实现的高级语言。C++程序的实现必须要使用某种C++语言的编译器进行编译。编译器的功能是将程序的源代码(.cpp)转换为机器代码的形式,称为目标代码(.obj)。然后,再使用目标代码进行链接,生成可执行文件(.exe),等待下一步执行的过程。18、关于成员函数的重载,说法正确的是()。A、就是在类中设计多个函数名相同,参数个数及参数类型也相同的函数B、析构函数可以重载C、函数重载,要求函数名相同,但参数个数不同,或参数相同,但其类型不同D、构造函数不可重载标准答案:4知识点解析:函数重载要求函数名相同,但参数个数或参数类型不同;构造函数可以重载;析构函数不能重载。19、有如下的程序:#include<cstring.h>#include<iostream.h>usingnamespacestd;classMyString{public:MyString(constchar*s);~MyString(){delete[]data;}protected:unsignedlen;char*data;};MyString::MyString(constchar*s){len=strlen(s);data=newchar[len+1];strcpy(data,s);}intmain(){MyStringa("C++Programing");MyStringb(a);return0;}在运行上面的程序时出错,出错的原因是()。A、构造函数的实参不允许是本类的对象B、没有定义实现深层复制(深拷贝)的复制构造函数C、构造对象a时实参与形参类型不符D、系统不能生成默认的复制构造函数标准答案:2知识点解析:暂无解析20、语句ofstreamf("DATA.DAT",ios_base::applios_lios_base::binary);的功能是建立流对象f,并试图打开文件DATA.DAT并与之连接,而且()。A、若文件存在,将文件指针定位于文件首,若文件不存在,建立一个新文件B、若文件存在,将其截为空文件;若文件不存在,打开失败C、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件D、若文件存在,打开失败;若文件在,建立一个新文件标准答案:4知识点解析:暂无解析21、多继承的构造顺序可分为如下四步:①所有非虚基类的构造函数按照它们被继承的顺序构造②所有虚基类的构造函数按照它们被继承的顺序构造③所有子对象的构造函数按照它们声明的顺序构造④派生类自己的构造函数体这四个步骤的正确顺序是()。A、④③①②B、②④③①C、②①③④D、③④①②标准答案:4知识点解析:暂无解析22、若有int*x[3]:则以下表述正确的是______。A、x是一个指向具有3个元素的整型数组的指针B、x是一个指向int型变量的指针C、x是一个有3个元素的指针数组,每个元素是一个int型指针D、x是一个数组,该数组的元素是指针x所指向的变量标准答案:4知识点解析:暂无解析23、关于虚函数的描述牛,______是正确的。A、派生类的虚函数与基类的虚函数具有不同的参数个数和类型B、基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数C、虚函数是—个成员函数D、虚函数是一个static类型的成员函数标准答案:4知识点解析:暂无解析24、对于结构中定义的成员,其隐含访问权限为______。A、publicB、protectedC、privateD、static标准答案:4知识点解析:结构中定义的成员隐含访问权限是private。25、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为A、publicB、protectedC、privateD、static标准答案:1知识点解析:本题考查点为类成员的访问权限,public关键字修饰的类成员可以被类的对象通过成员操作符“.”直接访问,protected和private则不能,而static不能单独修饰类的成员。26、若变量已正确定义并赋值,以下符合C++语言语法的表达式是A、a:=b+1B、a=b=c+2C、int18.5%3D、a=a+7=c+b标准答案:2知识点解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A中包含一个不合法的运算符":=";选项C应改为(int)18.5%3;选项D可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:c++语言赋值语句的运用。27、对于语句cout<<setfill(’*’)<<setw(10)<<1<<setfill(’*’)<<setw(2)<<2;的输出结果是A、*********1*2B、********12C、*******1*2D、12********标准答案:1知识点解析:C++语言中setfill的意思是在空格的地方填上setfill函数中的参数字符,setw的意思是设置整个输出字符串的字符个数,本题中用*来代替空格。28、下列关于模板的说法正确的是A、模板的实参在任何时候都可以省略B、类模板与模板类所指的是同一概念C、类模板的参数必须是虚拟类型的D、类模板中的成员函数全部都是模板函数标准答案:8知识点解析:在C++中规定如果一个类被声明为类模板,那么其中的所有成员函数就都成为了模板函数。29、下面类的定义,有()处错误。classMyClass{public:voidMyClass();~MyClass(intValue);private:inti=0;};A、1B、2C、3D、4标准答案:4知识点解析:上述类的定义共有3处错误。第一处:类的成员变量不能在定义时进行初始化:第二处:类的构造函数不能有返回值(包括void类型);第三处:类的析构函数不能有参数。30、有如下函数模板的定义:template<classT>Tfunc(Tx,Ty){returnx*x+y*y;}在下列对func()的调用中,不正确的是()。A、func(3,5);B、func<>(3,5);C、func(3,5.5);D、func<int>(3,5.5);标准答案:4知识点解析:对于选项C,编译系统从3获得的信息是“T对应于int”,从5.5处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误。对于选项D中紧跟在函数名后的<int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数5.5将被自动换成血型。31、若有以下定义:inta[]={1,2,3,4,5,6,7};charc1=’b’,C2=’2’;则数值不为2的表达式是()。A、a[1]B、’d’-c1C、a[’3’-c2]D、c2-0标准答案:8知识点解析:本题考查数组的定义、初始化及其引用,以及对字符ASCII码值的熟悉程度。解本题的关键在于熟悉字符的ASCII码值。字符在进行数学运算时取其ASCII码值,其中’b’的ASCII码值为98,’d’的ASCII码值为100,字符’2’的ASCII码值为50。根据以上知识,可知选项D中表达式“c2-0”的值为50。32、在C++语言中,退格符是A、\nB、\tC、\fD、\b标准答案:8知识点解析:在C++语言中退格符表示为\b退格。注意:其他转义字符的意义:\n表示回车换行,\t表示横向跳到下一制表位置,\v表示竖向跳格,\r表示回车,\f表示走纸换页,\\表示反斜线符,\a表示鸣铃,\ddd1~3位表示八进制数所代表的字符,\xhh1~2位表示十六进制数所代表的字符。33、有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是A、*p+9B、*(p+8)C、*p+=9D、p+8标准答案:2知识点解析:在C++语言的数组元素的引用方法,如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式.(p+2)来引用…,对于数组元素a19],可以用表达式*(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)。34、关于动态存储分配,下列说法正确的是A、new和delete是C++语言中专门用于动态内存分配和释放的函数B、动态分配的内存空间也可以被初始化C、当系统内存不够时,会自动回收不再使用的内存单元,因些程序中不必用delete释放内存空间D、当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new标准答案:B知识点解析:本题考核动态存储分配。用于动态分配的内存空间称为堆内存,它通常由操作系统进行管理且数量有限,其内存空间可以被初始化。若程序不断分配堆内存,则可能耗尽,在这种情况下,系统无法再对new提出的内存分配请求给予满足,此时new会返回空指针NULL,表示动态存储分配操作失败,不会造成系统崩溃。在C++程序中由new分配的动态内存空间必须通过delete运算符释放。35、有如下程序:#include#includeusingnamespacestd;classXCF{inta;public:XCF(intaa=O):a(aA){cout<<”1”;}XCF(XCF&X){a=x.a;cout<<”2”;}~XCF(){cout<Geta();deletepd;return0;}运行时的输出结果是A、1215588B、1218855C、12185D、128512标准答案:B知识点解析:在主函数中XCFd1(5),d2(d1);,d1调用了第一个构造函数,输出1;d2调用了拷贝构造函数,输出2;xcF*pd=IleWXCF’(8);调用了构造函数,输出l;cout<Geta();调用了成员函数Geta(),输出8;deletepd;调用了析构函数,输出8;return0;,在返回O之前程序会自动调用d1和d2的析构函数,输出55。因此总的输出应该是1218855。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树牛总的结点数为【】。标准答案:13知识点解析:根据二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中的二叉树有3个叶子结点,所以,该二叉树有3-1=2个度为2的结点;又知本题中的二叉树有8个度为1的结点。所以,本题中的二叉树总结点数为叶子结点数+度为1的结点数+度为2的结点数=3+8+2=13.所以,本题的正确答案为13。37、标准答案:私有继承知识点解析:暂无解析38、标准答案:inc或整型知识点解析:此题考查的是指针的声明语句。在声明语句中,变量前加“”即声明为指针类型变量,题目中变量b定义的只是普通的整型变量,不是指针,所以应填入int或整型。39、在数据结构中,从逻辑上可以把数据结构分成线性结构和【】。标准答案:非线性结构知识点解析:逻辑结构即数据元素之间的逻辑关系,是从逻辑关系上描述数据,与数据的存储无关。因此根据数据元素与数据元素之间的关系,逻辑结构被分为两大类:线性结构和非线性结构。而集合结构与非集合结构、树形结构和图状结构指的都是特定的数据结构类型。40、下图所示的二叉树的先序遍历序列是【】。标准答案:ABDGCEHIF知识点解析:二叉树的遍历是很重要的知识点,先序、中序、后序三种不同的方式要比较来掌握,注意其中的区别。此类题一定要先看清题目要求的是哪种遍历方法,然后根据不同遍历的特点来计算。本题要求是先序遍历,其遍历顺序应该为①访问根节点:②先序遍历左子树;③先序遍历右子树。按照定义,先序遍历序列是ABDGCEHIF。四、填空题(本题共10题,每题1.0分,共10分。)41、为解决在多重继承环境中因公共基类带来的______问题,C++语言提供了虚基类机制。标准答案:二义性知识点解析:暂无解析42、如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是______。标准答案:friendvoidA();知识点解析:C++中类的友元函数在声明时应在该函数前面加上关键字friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上friend。43、有如下程序:#includeusingnamespaeestd;classA{public:A(){cout<<‘A’;}};classB:privateA{public:B(){cout<<‘B’;}};intmain(){Aa:Bb:return0:}这个程序的输出结果是__________。标准答案:AAB知识点解析:“Aa:”语句将导致A的构造函数被执行,输出“A”,“Ab;”语句将导致B的构造函数执行,由于B私有继承A,故在执行B的构造函数前,先执行A的构造函数,输出“A”,然后执行B的构造函数,输出“B”。44、非成员函数应声明为类的__________函数才能访问这个类的private成员。标准答案:友元知识点解析:此题考查的是友元函数。一个类的私有成员和保护成员,只能由其本身的成员来访问,不能被其他函数访问,但是如果想让类中的数据成员可以被其他函数访问,可以通过友元函数声明来分享类中的数据资源。45、请按下面注释的提示将类B的构造函数定义补充完整。classA{inta;public:A(intaa=0){a=aa;}};classB:publicA{intb;Ac;public://用aa初始化基类A,用aa+1初始他类对象成员cB(intaa):【】{b=aa+2;}};标准答案:A或者A(aa),c(aa+1)或者A或者c(aa+1],A(aa)知识点解析:类的初始化。46、C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取【】方式。标准答案:传地址知识点解析:本题考查的是传值调用和传址调用的区别一传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址调用是把参数的地址传人,会改变原来的值。47、C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取______方式。标准答案:传地址知识点解析:暂无解析48、C++语言中的多态性是在编译时通过【】和模板体现的,在运行时是通过【】体现的。标准答案:函数重载虚函数知识点解析:C++中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。49、在C++语言的结构化程序设计中,【】是程序的基本组成单元;在C++语言的面向对象设计框架中,【】是程序的基本组成单元。标准答案:函数类知识点解析:函数是程序功能实现的主要方式,是实现结构化设计(将程序分成若干个函数实现)的基本组成;类是一种用户定义的类型,是实现数据封装和数据抽象的工具,是面向对象设计中的基本组成。50、下面程序的执行结果是【】。#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<setfill(’x’)<<setw(10);cout<<"Hello"<<endl;}标准答案:xxxxxHello知识点解析:暂无解析国家二级(C++)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的时间复杂度是指()。A、执行算法程序所需要的时间B、算法程序的长度C、算法执行过程中所需要的基本运算次数D、算法程序中的指令条数标准答案:C知识点解析:所谓的算法时间复杂度是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。2、下列描述中,不是线性表顺序存储结构特征的是()。A、不便于插入和删除B、需要连续的存储空间C、可随机访问D、需另外开辟空间来保存元素之间的关系标准答案:D知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。3、按照“先进后出”原则组织数据的数据结构是()。A、队列B、栈C、双向链表D、二叉树标准答案:B知识点解析:栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,而栈底元素是最后被删除的栈,是按“先进后出”的原则组织数据的。4、有下列二叉树,对此二叉树前序遍历的结果为()。A、ACBEDGFHB、ABDGCEHFC、HGFEDCBAD、ABCDEFGH标准答案:B知识点解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且在访问左、右子树时,先访问根结点,再依次访问其左、右子树。5、对建立良好的程序设计风格,下列描述中正确的是()。A、程序应该简单、清晰、可读性好B、符号名的命名只需要符合语法C、充分考虑程序的执行效率D、程序的注释可有可无标准答案:A知识点解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。6、下列选项中不属于软件工程3个要素的是()。A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。7、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件的生命周期可分为软件定义、软件开发及软件运行维护3个阶段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作是软件的运行及后期的维护等。8、使用白盒测试法时,确定测试数据应该根据()和指定的覆盖标准。A、程序的内部逻辑B、程序的复杂结构C、使用说明书D、程序的功能标准答案:A知识点解析:白盒测试是把测试对象看作是一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准测试数据。9、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。A、DB包括DBS和DBMSB、DBMS包括DB和DBSC、DBS包括DB和DBMSD、没有任何关系标准答案:C知识点解析:数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台5个部分组成,可见DB和DBMS都是DBS的组成部分。10、对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为()。A、并运算B、交运算C、差运算D、积运算标准答案:A知识点解析:关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。二、选择题(本题共25题,每题1.0分,共25分。)11、下列运算符中,()运算符在C++中不能重载。A、&&B、[]C、::D、new标准答案:C知识点解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了“.”、“.*”、“->*”、“::”、“?:”这5个运算符之外,其他运算符都可以重载。12、实现运行时的多态性要使用()。A、重载函数B、析构函数C、构造函数D、虚函数标准答案:D知识点解析:C++中函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时系统就能决定调用的是哪个函数。动态多态性是在程序运行过程中才动态确定操作所针对的对象。动态多态性是通过虚函数实现的。13、以下都是C++语言标识符的是()。A、dsfa,df4,f$B、huhj,a^,k2C、3k,hj_9D、_ok,jk,k8标准答案:D知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其中第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合这些要求的只有选项D)。14、在ios中提供控制格式的标志位中,()是转换为十六进制形式的标志位。A、hexB、octC、decD、left标准答案:A知识点解析:格式控制标志hex格式控制是整数按十六进制输出;oct格式控制是整数按八进制输出:dec格式控制是整数按十进制输出;left输出数据在指定的宽度内左对齐。15、下列程序的运行结果为()。#include<iostream.h>voidmain(){inta=2;intb=a+1;cout<<a/b<<endl;}A、0.66667B、0C、0.7D、0.66666666标准答案:B知识点解析:因为题目中定义的变量a和b均为整型数据,所以a/b即2/3得到的仍然是整型数据,得到0。16、下列程序的输出结果是()。#include<iostream.h>main(){intm=5;if(m++>5)cout<<m;elsecout<<m--;}A、7B、6C、5D、4标准答案:B知识点解析:此题中,因为m++>5成立(此时m的值变为6),所以执行语句cout<<m;输出结果为6。17、下列关于模板的叙述中,错误的是()。A、模板声明中的第一个符号总是关键字templateB、在模板声明中用“<”和“>”括起来的部分是模板的形参表C、类模板不能有数据成员D、在一定条件下函数模板的实参可以省略标准答案:C知识点解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C++中可以为类模板的参数设置默认值,可以有数据成员,选项C)错误。18、类模板template<classT>classx{...},其中友元函数f对特定类型T(如int),使函数f(x<int>)成为x<int>模板类的友元,则其说明为()。A、friendvoidf();B、friendvoidf(x<T>);C、friendvoidA::f();D、friendvoidC<T>::f(x<T>);标准答案:B知识点解析:声明一个函数模板的格式:template<棋板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。19、下列是重载为非成员函数的运算符函数原型,其中错误的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator-(Praction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);标准答案:C知识点解析:由于取负运算符“-”是一元运算符,当作为成员函数重载时参数表中没有参数,那个唯一的操作数以this指针的形式隐藏在参数表中。故选项C)错误。20、下列程序的运行结果为()。#include<iostream.h>voidmain(){inta=2;intb=a+1;cout<<a/b<<endl;}A、0.66667B、0C、0.7D、0.66666666标准答案:B知识点解析:因为题目中定义的变量a和b均为整型数据,所以a/b即2/3得到的仍然是整型数据,得到0。21、只能作为成员函数重载的是()。A、=B、++C、*D、new标准答案:A知识点解析:运算符重载为成员函数的形式为:函数类型operator运算符(形参表){函数体;};运算符重载为友元函数的形式为:friend函数类型operator运算符(形参表){函数体;}。一般来讲,单目运算符最好重载为成员函数,双目运算符最好重载为友元函数。=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载。22、下列函数的运行结果是()。#include<iostream.h>intadd(inta,intb);voidmain(){externintx,y;cout<<add(x,y)<<endl;}intx(20),y(5);intadd(inta,intb){ints=a+b;returns;}A、25B、30C、20D、15标准答案:A知识点解析:由主函数main入手,定义外部变量x和y,调用函数add。因为x,y为外部变量,所以“intx(20),y(5);”的赋值在add也是有效的,即add函数的运算结果为25。23、下列程序的输出结果是()。#ificlude<iostream>usingnamespacestd;intmain(){cout.fill(’*’);cout.width(5);cout<<oct<<100<<endl;return0;}A、**100B、**144C、100**D、144**标准答案:B知识点解析:cout.fill()用于设置或返回输出的填充字符,默认是空格,fill()函数的设置一直有效,直到下一个fiN()函数改变该值为止。cout.width()用于设置或返回(不带参数)输出数据的字段宽度,此函数的设置只对下一个输出有效。注意:默认为输出数据在指定宽度内右对齐,oct格式控制是整数按八进制输出。24、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值的成员函数标准答案:A知识点解析:此题考查的是常对象与常成员函数的概念。使用const关键字修饰的对象称为常对象,它不能被更新,所以常对象只能调用常成员函数而不能调用其他成员函数;使用const关键字声明的成员函数是常成员函数,它也不能被更新,常成员函数只能调用常成员函数而不能调用其他函数。25、有如下程序:intx=3;do{x-=2;cout<<x;}while(!(--x));执行这个程序的输出结果是()。A、1B、30C、1-2D、死循环标准答案:C知识点解析:此题考查的是do-while循环语句。do-while循环首先执行do语句中的循环体,再判断是否需要继续执行循环。题目中do语句“x-=2”,while语句中“--x”即x为0,取反为非0,循环继续执行;执行“x-=2”和“--x”取反后,循环结束程序退出。26、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p;*p=9;cout<<"Thevalueatp:"<<*p;return0;}编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:此题考查的是指针的使用。本题中,在给*p赋值前,指针p并没有指向一个具体的对象。此时可以通过编译,但运行时由于p中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。27、有如下类定义:classAA{inta;public:intgetRef()const{return&a;}//①intgetValue()const{returna;}//②voidset(intn)const{a=n;}//③friendvoidshow(AAaa)const{cout<<a;}//④};其中的四个函数定义中正确的是()。A、①B、②C、③D、④标准答案:B知识点解析:此题考查了常成员函数和友元函数的概念。选项A)中,getRef()函数的返回值和函数类型不符,故错误;选项C)中set()常成员函数改变了数据成员的值,这是不允许的;选项D)中show()函数被同时定义成友元函数和常成员函数是错误的。28、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{public:voidfun(){______cout<<"Derived::fun"<<endl;}};intmain(){Derivedd;d.fun();return0;}已知其执行后的输出结果为:Base::funDerived::fun则程序中下划线处应填入的语句是()。A、Base.fun();B、Base::fun();C、Base->fun();D、fun();标准答案:B知识点解析:此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员函数fun()的调用语句,此处只能使用作用域运算符“::”才能调用到基类的同名函数。29、有如下类定义:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){}//③intvalue=0;//④};其中存在语法错误的行是()。A、①B、②C、⑧D、④标准答案:D知识点解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。30、下列程序的输出的结果是()。#include<iostream.h>voidmain(){inti,k,a[10],p[3];k=5;for(i=0;i<9;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;cout<<k;}A、20B、21C、22D、23标准答案:B知识点解析:程序中首先在第一个for循环中将a每一个元素赋值为0,1,2……。然后在第二个循环中p的第i元素为a中的第i*(i+1),即0,2,6,第三个循环中每个p中的元素值乘以2,然后加上5,累加。答案为21。31、下列有关指针的用法中错误的是()。A、inti;int*p=&i;B、inti;int*p;i=*p;C、int*p;p=0;D、inti=5;int*p;p=&i;标准答案:B知识点解析:“inti;”语句定义了一个整型变量i。“int*p”定义了一个整型指针p。选项A)中的“int*p=&i;”是定义整型指针变量p,并指向整型i的地址。选项B)中“i=*p”语句是将p指向的变量赋值给i,而指针p没有初始化,所以选项B)错误。选项C)中“p=0;”表示p指向0的地址。选项D)中“&i”为取i的地址,并赋值给p。32、下列程序运行后的输出结果是()。#include<iostream.h>voidfun(int,int,int*);voidmain(){intx,y,z;fun(5,6,&x);fun(7,x,&y);fun(x,y,&z);cout<<x<<","<<y<<","<<z<<endl;}voidfun(inta,intb,int*c){b+=a;*c=b-a;}A、5,5,5B、6,6,6C、5,6,7D、7,7,7标准答案:B知识点解析:由程序中的main函数入手,分别调用fun函数,第一个调用中x参数为引用地址,调用后x的值为6,因为参数为地址,所以第二个调用中的x参数值为6,调用后y的计算结果为6。同理,z在第三个函数调用后z的值为6。33、下列程序输出的结果是()。#include<stdio.h>fun1(chara,charb){charc;c=a;a=b;b=c;}fun2(char*a,charb){charc;c=*a;*a=b;b=c;}fun3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a=’A’;b=’B’;fun1(a,b);putchar(a);putchar(b);a=’A’;b=’B’;fun2(&a,b);putchar(a);putchar(b);a=’A’;b=’B’;fun3(&a,&b);putchar(a);putchar(b);putchar(’\n’);}A、BABBABB、ABBBBAC、ABBABAD、ABABBA标准答案:B知识点解析:由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以d调用fun1后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA。34、在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序的执行速度,则应该选用()。A、内联函数B、重载函数C、递归调用D、嵌套调用标准答案:A知识点解析:此题考查的是内联函数的相关知识点。C++引入内联函数是用它来代替C语言中的预处理宏函数,内联函数在调用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。35、下列关于类和对象的叙述中,错误的是()。A、一个类只能有一个对象B、对象是类的具体实例C、类是对某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系标准答案:A知识点解析:此题考查的是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、在数据库的概念结构设计中,常用的描述工具是【】。标准答案:E-R图知识点解析:暂无解析37、数据库系统中实现各种数据管理功能的核心软件称为【】。标准答案:数据库管理系统知识点解析:暂无解析38、数组是有序数据的集合,数组中的每个元素具有相同的【】。标准答案:数据类型知识点解析:暂无解析39、按照逻辑结构分类,数据结构可分为线性结构和非线性结构,栈属于【】。标准答案:线性结构知识点解析:暂无解析40、在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。标准答案:自顶而下知识点解析:暂无解析四、填空题(本题共8题,每题1.0分,共8分。)41、若a=12,b=14,c=0,则表达式“((y=(a>B)?a:B)>C)?y:c”的值为【】。标准答案:14知识点解析:本题考核运算符的应用。条件运算符是一种在两个表达式中选择一个的操作,它是C++中惟一的三元运算符。在本题中,先计算(a>B)?a:b,因为a<b,所以条件表达式的值为0,因此y=b=14,而y>c的逻辑值为真,所以表达式的值为y的值,即14。42、下面程序的输出结果为【】。#include<iostream>usingnamespacestd;voidinitialize(intprintNo,intstate=0);voidinitialize(intprintNo=1,intstate);intmain(){initialize();return0;}voidinitialize(intprintNo,intstate){cout<<printNo<<","<<state<<end1;}标准答案:1,0知识点解析:本题考核带有缺省值的函数,本题中函数initialize()进行了两次函数原型的说明,使本来不带默认值的形参带上默认值。由于主函数中调用initialize()时没有给定实参,所以函数自动调用其参数缺省值。输出1和0。43、下列程序的输出结果是【】#include<iostream>usingnamespacestd;int&qetVar(int*pint){renurn*pint;}intmain(){inta=10;getVar(&a)=20;cout<<a<<end1;return0;}标准答案:20知识点解析:本题考核引用的使用。题中函数getVar返回的为实参的引用,即将a的引用赋值为20,所以最后输出a的值为20。44、若有以下程序:#include<iostream>usingnamespacestd;classBase{public:voidwho(){cout<<"Base"<<end1:}};classDerived1:publicBase{public:voidwho(){cout<<"Derived"<<end1;}};intmain(){Base*p;Derived1obj1;p=&obj1;p->who();return0;}则该程序运行后的输出结果是【】。标准答案:Derived知识点解析:本题考核对象指针的使用。题中基类Base对象指针p用派生类Derived对象obj1来初始化,那么通过对象指针p调用的who函数版本为基类Base中定义的版本,所以程序输出Derived。45、多态性分为两类:编译时的多态性和【】的多态性。标准答案:运行时知识点解析:本题考核多态性的概念。在C++语言中,多态性可分为两类:编译时的多态性和运行时的多态性。46、C++中,设置虚基类的目的是【】。标准答案:解决二义性问题知识点解析:C++中可以将共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只有一个拷贝。这样就解决同名成员的二义性。47、下列程序的输出结果是【】。#include<iostream>usingnamespacestd;template<typenameT>Ttotal(T*data){Ts=0;while(*data){s+=*data++;}returns;}intmain(){intx[]={2,4,6,8,0,12,14,16,18};cout<<total(x)<<end1;return0;}标准答案:20知识点解析:本题考核函数模板的应用。解此题的关键是理解函数total的作用,total的作用是将数组的元素值相加,直到某个元素值为0截至,并返回相加的结果。数组x的第5个元素的值为0,所以total返回的结果为前4个元素值的相加,即20。48、下面程序的输出结果是【】。#include<iostream.h>#include<math.h>classpoint{doublex;doubley;public:point(doublea,doubleb){x=a;y=b;}frienddoubledistance(pointa,pointb);};doubledistance(pointa,pointb){returnsqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}voidmain(){pointp1(1,2);pointp2(5,2);cout<<distance(p1,p2)<<end1;}标准答案:4知识点解析:本题考核友元函数的应用。分析程序:类point中定义了两个私有成员x和y,以及一个友元函数distance。从而,函数distance可以访问类point中的任何成员。在函数distance中,返回值为sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))。由此可知,函数distance的功能是计算a、b两点之间的距离。在土函数main中,先定义两点:p1(1,2)和p2(5,1)。然后调用函数distance计算两点之间的距离为4,所以程序最后输出为4。国家二级(C++)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中正确的是A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:1知识点解析:线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;栈、队列、线性链表实际上也是线性表,故也是线性结构;树是一种简单的非线性结构。2、非空的循环单链表head的尾结点(由p所指向),满足A、p->next==NULLB、p==NULLC、p->next=headD、p=head标准答案:4知识点解析:循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即p->next=head。3、已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是A、堆排序B、直接插入排序C、快速排序D、直接选择排序标准答案:2知识点解析:当数据表A中每个元素距其最终位置不远,说明数据表A按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项B)。4、对建立良好的程序设计风格,下面描述正确的是A、程序应简单、清晰、可读性好B、符号名的命名只要符合语法C、允分考虑程序的执行效率D、程序的注释可有可无标准答案:1知识点解析:程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。5、下列不属于结构化分析的常用工具的是A、数据流图B、数据字典C、判定树D、PAD图标准答案:8知识点解析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。而PAD图是常见的过程设计工具中的图形设计工具。6、在软件生产过程中,需求信息的给出是A、程序员B、项目管理者C、软件分析设计人员D、软件用户标准答案:8知识点解析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。7、下列工具中为需求分析常用工具的是A、PADB、PFDC、N-SD、DFD标准答案:8知识点解析:PAD、PFD、N—S和HIPO为详细设计过程中的过程设计工具中的图形工具。DFD、DD(数据宁典)、判定表和判定树是需求分析中的结构化分析工具。8、NULL是指A、0B、空格C、未知的值或无任何值D、空字符串标准答案:4知识点解析:此题属于记忆性的题目,NULL是指未知的值或无任何值。9、数据库的故障恢复一般是由A、数据流图完成的B、数据字典完成的C、DBA完成的D、PAD图完成的标准答案:4知识点解析:一旦数据库中的数据遭受破坏,需要及时进行恢复,RDBMS一般都提供此种功能,并由DBA负责执行故障恢复功能10、下列说法中,不属于数据模型所描述的内容的是A、数据结构B、数据操作C、数据查询D、数据约束标准答案:4知识点解析:数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。二、选择题(本题共25题,每题1.0分,共25分。)11、下列字符串中可以用作C++语言标识符的是A、_1234B、foo~~barC、virtualD、34var标准答案:1知识点解析:C++语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。12、关于C++语言与C语言关系描述中错误的是A、C++语言是C语言的超集B、C++语言对C浯言进行了扩充C、C++语言包含C语言的全部语法特征D、C++语言与C语言都是面向对象的程序设计语言标准答案:8知识点解析:C语言是一种面向过程的程序设计语言,而C++语言是一种面向对象的设计语言,C++语言是C语言的超集,它包含了C语言的所有语言特性,并进行了扩充。13、下列语句的输出结果cout<<strlen("\t\,\065\xff\n");A、5B、14C、8D、输出项不合法,无正常输出标准答案:1知识点解析:该字符串中包含的字符是’\t’(跳格符)、’\"‘(双引号)、’\065’(ASCII值为八进制065,也即十进制为51的字符)、’\xff’(ASCII值为十六进制ff,也即十进制为255的字符)、’\n’(换行符)。14、在C++语言中,不合法的实型数据的是A、0.123B、123e3C、2.1e3.5D、123标准答案:4知识点解析:在C++语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,e3,2.le3.5,.e3,e等都是不合法的指数形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必须有数字,且e的后面必须是整数。15、若有如下语句#include<iostream.h>voidmain(){intx=3:do{X=X-2;cout<<X;}while(!(--x));}则上面程序段A、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环标准答案:2知识点解析:do—while语句的一般格式为do循环体语句while(表达式);,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行x=x-2,即为l。判断表达式的值,!(--x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。16、下面有关for循环的正确描述是A、for循环只能用于循环次数已经确定的情况B、for循环是先执行循环体语句,后判断表达式C、在for循环中,不能用break语句跳出循环体D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来标准答案:8知识点解析:选项A)for循环可以用于循环次数不确定的情况;选项B)for循环是先判断表达式,后执行循环体语句;选项C)在for循环中,可以用break语句跳出循环体,从而接着执行循环体后面的语句。17、以下程序中调用cin函数给变量a输人数值的方法是错误的,其错误原因是#include<iostream.h>voidmain(){int*p,*q,a,b;p=&a;cout<<”inputa:”;cin>>p;}A、*p表示的是指针变量p的地址B、p表示的是变量a的地址,而不是变量a的值C、*p表示的是指针变量p的值D、*p只能用来说明p是一个指针变量标准答案:2知识点解析:p表示的是变量a的地址,定义后*p表示的是变量a的值。18、假定int类型变量占用两个字节,其有定义intx[10];{0,2,4};,则数组x在内存中所占字节数是A、3B、6C、10D、20标准答案:8知识点解析:x数组共有10个元素,在花括弧内只提供3个初值,这表示只给前面的3个成员赋值,后7个元素的值为0,所以,一共有20个字节。19、有以下程序#include<iostream.h>voidfun(inta,intb,intc){a=456,b=567,c=678;}voidmain(){intx=10,y=20,z=30;fun(x,y,2);cout<<X<<‘,’<<y<<‘,’<<z<<endl;}输出结果是A、30,20,10B、10,20,30C、456,567,678D、678,567,456标准答案:2知识点解析:本题:考查函数中变量的作用范围,在主函数中给变量x,y,z赋值,然后将其作为实参传递给了函数fun(),虽然在函数fun()中改变了这3个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在凋用函数fun()结束后,主函数3个变量的值未改变。20、以下叙述正确的是A、函数可以嵌套定义但不能嵌套调用B、函数既可以嵌套调用也可以嵌套定义C、函数既不可以嵌套定义也不可以嵌套调用D、函数可以嵌套调用但不可以嵌套定义标准答案:8知识点解析:在C++语言中,所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调用。但是不能调用main()函数。21、下列定义中p指向的地址可更改,但*p不能够更改的是A、constint*p;B、int*constp;C、constint*constp;D、int*p;标准答案:1知识点解析:constint*p;是只能改变指针地址,int*constp;是只能改变*p的内容,constint*constP;是指针的地址和*p的内容都不能改变,int*p;是两者都能改变。22、下面的语句中错误的是A、inta=5;intx[a];B、constinta=5;intx[a];C、intn=5;int*p=newint[a];D、constintn=5;int*p=newint[a];标准答案:1知识点解析:在C++中定义数组时,数组的范围参数在静态定义时必须是一个常数,而在动态分配内存定义时可以是常数,也可以是一个赋了值得参数。故选项A)是错误的定义方法。23、下面程序的结果是#include<iostream.h>classA{inta;public:A():a(1){}voidshowa(){cout<<a;}};classB{inta;public:B():a(2){}voidshowa(){cout<<a;}};classC:publicA,publicB{inta;public:C():a(3)㈠voidshowa(){cout<<a;}};voidmain(){Cc;c.showa();}A、1B、2C、3D、程序有错误标准答案:4知识点解析:类A,类B,中都有showa()函数,类C继承后再次重写showa()函数就解决了继承的二义性,这时c.showa()函数显示的就是类C中的showa()的值。24、关于二义性的描述错误的是A、一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性B、解决二义性可以用对成员名的限定法C、父类和子类中同时出现同名函数,也可能存在二义性D、一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,对该父类成员进行访问时,可能出现二义性标准答案:4知识点解析:基类和其继承类同时出现同名函数,则在继承类中实现对象中调用该函数是使用继承类中的定义,这种情况下是不会产生二义性的。25、如果表达式x*y+2中,“*”是作为友元函数重载的,“+”是作为友元函数重载的,则该表达式还可为A、operator+(operator*(x,y),z)B、x.operator+(operator*(x,y),z)C、y.operator*(operator+(x,y),z)D、x.operator+(operator*(x,y))标准答案:1知识点解析:C++中用成员函数重载x*y为:x.operator*(y),用友元函数重载x*y为:operator*(x,y),用成员函数重载x+y为:x.operator+(y),用友元函数重载x+y为:operator+(x,y)。26、函数模板:template<classT>Tadd(Tx,Ty){returnx+y;}下列对add函数的调用不正确的是A、add<>(1,2)B、add<int>(1,2)C、add(1,0,2)D、add(1.0,2.0)标准答案:4知识点解析:对于template<classT>Tadd(Tx,Ty){returnx+y;}调用时可以省略模板实参的声明,但是要求x和y的数据类型必须是一样的。27、对于语句cout<<setfill(‘*’)<<setw(10)<<1<<setfill(‘*’)<<setw(2)<<2;的输出结果是A、*********1*2B、********12C、*******1*2D、12********标准答案:1知识点解析:C++语言中setfill的意思是在空格的地方填上setfill函数中的参数字符,setw的意思是设置整个输出字符串的字符个数,本题中用。宋代替空格。28、this指针是C++语言实现什么的一种机制?A、抽象B、封装C、继承D、重载标准答案:2知识点解析:this指针是C++语言实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象都拥有自己的函数成员。29、有如下程序#include<iostream.h>intfunc(inta,intb){return(a+b);}voidmain(){intx=2,y=5,z=8,r;r=func(func(x,y),z);cout<<r;该程序的输出的结果是A、12B、13C、14D、15标准答案:8知识点解析:语句r=time(func(x,y),z);中,fun(x,y)是一次凋用函数,它的值作为func另一次调用的实参。注意本题调用两次函数。30、下列程序的输出结果是#include<iostream.h>classMyclass{public:Myclass(inti=0,intj=0){x=i;y=j;}voidshow(){cout<<"x="<<x<<""<"y="<<y<<endl;}voidshow()const{cout<<"x="<<""<<"y="<<y<<endl;}privated:intx;inty;};voidmain(){Myclassmy1(3,4);constmy2(7,8);myl.show();my2.show();}A、x=4,y=3;x=7,y=8B、x=3,y=4;X=7,y=8C、x=7,y=8;x=4,y=3D、x=8,y=7;x=7,y=8标准答案:1知识点解析:在Myclass类中定义了两个同名函数show,其中一个是常成员函数。在main函数中定义了两个对象myl,my2,其中对象my2是常对象。这两个对象调用成员函数show时,通过对象myl调用的是没有用,const修饰的一般成员函数,而通过对象my2调用的是const修饰的常成员函数。31、下列描述中,抽象类的特性是A、可以说明虚函数B、可以定义友元函数C、可以进行构造

温馨提示

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

评论

0/150

提交评论