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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷8(共9套)(共184题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共37题,每题1.0分,共37分。)1、下列数据结构中,能用二分法进行查找的是()。A、无序线性表B、线性链表C、二叉链表,D、顺序存储的有序表标准答案:D知识点解析:二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。2、下列叙述中,不属于设计准则的是()。A、提高模块独立性B、使模块的作用域在该模块的控制域中C、设计成多入口、多出口模块D、设计功能可预测的模块标准答案:C知识点解析:大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。3、下列队列的描述中,正确的是()。A、队列属于非线性表B、队列在队尾删除数据C、队列按“先进后出”进行数据操作D、队列按“先进先出”进行数据操作标准答案:D知识点解析:队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。4、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A、冒泡排序为n(n一1)/2B、简单插入排序为nC、希尔排序为nD、快速排序为n/2标准答案:A知识点解析:暂无解析5、为了使模块尽可能独立,要求()。A、内聚程度要尽量高,耦合程度要尽量强B、内聚程度要尽量高,耦合程度要尽量弱C、内聚程度要尽量低,耦合程度要尽量弱D、内聚程度要尽量低,耦合程度要尽量强标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。6、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。7、数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()。A、数据与程序独立存放B、不同的数据被存放在不同的文件中C、不同的数据只能被对应的应用程序所使用D、以上三种说法都不对标准答案:D知识点解析:数据独立性是数据与程序问的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。所以选项A),选项B)和选项c)都不正确。8、在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。9、软件调试的目的是()。A、发现错误B、改善软件的性能C、改正错误D、验证软件的正确性标准答案:C知识点解析:在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。10、在公有派生时,派生类中定义的成员函数只能访问原基类的()。A、私有成员、保护成员和公有成员B、保护成员和私有成员C、公有成员和保护成员D、公有成员和私有成员标准答案:C知识点解析:派生类中的成员,一部分是从基类继承来的,另一部分是自己定义的新成员,所有的这些成员也分为公有、私有和保护三种访问权限。其中,从基类继承下来的全部成员构成派生类的基类,这部分的私有成员是派生类不能直接访问的,而公有成员和保护成员则是派生类可以直接访问的,但它们在派生类中的访问属性随着派生类对基类的继承方式而改变。11、有如下定义:intb[10]={1,2,3,4,5,6,7,8,9,10},*q=b;则数值为8的表达式是()。A、*q+8B、*(q+7)C、*q+=8D、q+7标准答案:B知识点解析:数组的下标是从0到数组的长度减l。*(p+i)是取数组的第i+1个元素,即下标为i的元素。因此*(p+7)取数组的第八个元素,即元素8。12、下面的符号中可以用作C++标识符的是()。A、3testB、fcc~otherC、elseD、radius标准答案:D知识点解析:c++标识符是以字母、下划线开头的,由字母、数字及下划线组成的,不与关键字相同的字符串。选项c)中else为关键字。13、下列程序执行后,输出的结果是()。intx一5,Y=0;while(++x)y++;cout<A、lB、2C、4D、5标准答案:C知识点解析:循环条件是++x,存c++中,对于非0值全都为真,0代表假。x的初始值为-5,所以循环能进行4次。14、有如下类声明:classTestClass{intn;public:TestClass(inti=0):n(i){)voidsetValue(intnO););下面关于setValue成员函数的实现中,正确的是()。A、TestClass::setValue(intn0)(n=n0;}B、voidTestClass::setValue(intn0){n=n0;}C、voidsetValue(intn0){n=n0;)D、setValue(intn0){n=n0;}标准答案:B知识点解析:C++中类成员函数的实现形式为:返回类型类名::成员函数名(参数列表){代码块}15、下面关于常成员函数的说法中正确的是()。A、常成员函数不能修改任何的数据成员B、常成员函数只能修改一般的数据成员C、常成员函数只能修改常数据成员D、常成员函数只能通过常对象来调用标准答案:A知识点解析:c++中使用const关键字来说明函数称为常成员函数,常成员函数不能更新对象中的数据成员。16、下面关于虚函数的描述中,正确的是()。A、基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明B、虚函数是非成员函数C、虚函数是static类型的成员函数D、派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型标准答案:A知识点解析:虚函数是非static类型的成员函数,基类中可以利用virnJal关键字来声明虚函数,派生类中定义相同原型函数时可不必加vinual说明,直接重写基类中的函数。在派生类中的虚函数必须与基类中的虚函数具有相同的参数个数与类型。17、有如下程序:#includeusingnamespacestd;classBase{protected:Base(){cout<<’Base’;)Base(charc){cout<A、DerivedB、Derive~dBaseC、BaseD~erivedD、DberivedD,erived标准答案:C知识点解析:派生类Derived由基类Base公有派生,存派生类构造函数声明时系统会自动调用基类的缺省构造函数。调用Derivedd(‘Derived’);后,执行类DeriVed构造函数的Derived(charc),系统自动调用基类的缺省构造函数Base(),输出字母Base;再执行派生类的构造函数Derived(charc),输出字母Derived。18、有如下程序:#includeusmgnamespacestd;intmain(){cout.fin(’*’);cout.width(6);cout.fill(’#’);cOut<<888<A、###888B、88###C、***888D、888***标准答案:A知识点解析:c++在流操作中,利用cout对象的width属性设置输出字符的宽度,用fill函数来设置需要填充的字符。题目程序中,首先设置填充字符为+,输出宽度为6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于888不足6个字符,所以在前面以三个“#”来填充。19、假定一个类的构造函数为A(intaa,intbb){a=aa一;b=a*bb;),则执行Ax(4,5);语句后,x.a和x.b的值分别为()。A、3和15B、5和4C、4和20D、20和5标准答案:C知识点解析:因为aa后减,所以a=4;b的值与a、bb相关,b=4*5=20,与aa没有任何关系。20、在类中说明的成员可以使用关键字的是()。A、publicB、externC、cpuD、register标准答案:A知识点解析:extem用于声明外部变量的,register声明寄存器类型变量,无cpu类型。它们都不能声明类成员。public声明为公有访问权限。21、下列不能作为类的成员的是()。A、自身类对象的指针B、自身类对象C、自身类对象的引用D、另一个类的对象标准答案:B知识点解析:类的定义,如果有自身类对象,会使其循环定义,选项B)错误。在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用,类[],可以何另一个类的对象,即成员对象。22、使用地址作为实参传给形参,下列说法正确的是()。A、实参是形参的备份B、实参与形参无联系C、形参是实参的备份D、参与形参是同一对象标准答案:D知识点解析:地址作为实参,表示实参与形参代表同一个对象。如果实参足数值,形参也是普通变量,此时形参是实参的备份。23、下列程序的输出结果是()。#includevoidmain(){intn[][3]={10,20,30,40,50,60);int(*p)[3];p=n;cout<A、10,30,50B、10,20,30C、20,40,60D、10,30,60标准答案:B知识点解析:暂无解析24、设程序如下:#includeusingnamespacestd;intmain0{int**p,*q,r=10;q=&r:P=&q;cout<<**p+1<A、P的地址B、r的地址C、1lD、运行错误标准答案:C知识点解析:p为一个二级指针,其存放的是指针变量q的地址,而q存放的又是r的地址。故式子**p相当于对r的引用。所以最后输出的结果为11。25、下面关于函数模板的表述中不正确的是()。A、类模板的成员函数都是模板函数B、类模板本身在编译过程中不会产生任何代码C、类模板只能有虚拟类型的参数D、用类模板定义一个对象时,实参不能省略标准答案:C知识点解析:类模板本身在编译时是不会产生代码的,只有在其实例化以后才产牛代码。定义一个对象时,不能省略其实参。26、下面类的声明中的几个语句,正确的是(设定语句是主函数中的语句)()。classTestClass{private:intdata;public:TestClass(intg_data){data=g_data;)voidshow(){cout<A、TestClass木p;B、TestClassm;C、TestClass.data=8;D、TestClass.show();标准答案:A知识点解析:C++中,若没有类的显式声明构造函数则系统会为其提供一个默认的构造函数,若提供了构造函数则会将系统提供的默认的构造函数覆盖。调用构造函数时,实参必须与形参匹配。但是如果声明一个埘象指针时,不是定义一个对象,不凋用对象的构造函数。27、类中的一个字符指针成员指向具有m个字节的存储空间时,它所能存储的字符串的最大长度为()。A、m.2B、m.1C、mD、m+l标准答案:B知识点解析:在C++中,字符中以‘\0’作为字符串结束的标志,所以个数为m一1。28、有如下程序:#includeusingnamespacestd;classTestClass{staticinti;public:TestClass(){i++;)~TestClass0{i--;)staticintgetVal0{returni;));intTestClass::i=0;voidf(){TestClassobj2;cout<getVal();deleteobj3;cout<A、232B、22lC、222D、231标准答案:B知识点解析:由i是类TestClass的静态成员,该成员被类的所有实例共享。当定义obil时,系统自动渊用构造函数TestClassω,i的值将加l;调用函数f()时,在定义obj2时系统会自动调用构造函数TestC:lass(),i的值将再加l:调用obj2.getVal();后,将i的值输出,输出值为2;当调用函数f()即将结束时,系统自动调用析构函数~TestClass(),i的值将减1;当定义obi3时,系统自动调用构造函数TestClass(),i的值将加l,调用cout<getVal();后,将i的值输出,输出值为2;调用deleteobj3后将执行TestClass的析构函数~TestClass(),执行后,i的值将减1,TestC:lass::getVal()为类的一个静态成员函数,其作用是返回私有静态成员变量i的值1。29、有如下程序:#includeusingnamespacestd;classTestClass{intn:public:TestClass(intk):n(k){}intget0{returnn;}intget()const{returnn+l;}};intmain(){TestClassp(5);constTestClassq(6);cout<A、55B、57C、75D、77标准答案:B知识点解析:C++中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为“intget()const;”的函数,对于非常对象将调用原型为”.intget();”的函数。凶为首先用5对对象p进行了初始化,所以执行p.get()时直接返回5,而对于常对象则以6对q进行初始化,在调用q.get()时,将渊用原型为”intget()const;"的函数,该函数将返回n+1,第二个输出应为7,所以本题答案为57。30、下列关于抽象类的表述中正确的是()。A、派生类必须要实现作为基类的抽象类中的纯虚函数B、抽象类的成员函数至少有一个没实现C、抽象类不可能用来定义对象D、派生类不能成为抽象类标准答案:C知识点解析:C++中拥有纯虚函数的类称为抽象类。抽象类不能用来定义对象。如果一个抽象类的派生类没有重定义来自基类的某个纯虚函数,则该函数在派生类中仍是纯虚函数,该类仍为抽象类。31、执行下列语句:#includeusingnamespacestd;intmain(){intx=3;if(x=5)cout<A、3B、4C、5D、6标准答案:C知识点解析:if(条件)语句lelse语句2,语句的执行过程足:首先判断条件是否为真(不为0),为真则执行语句1,甭则执行语句2。题目中的条件足x=5,意思是把5赋予变量x,它将x置5且返回一个真值。32、假定TestClass为一个类,则该类的拷贝构造函数的声明语句为()。A、TestClass(TestClassX)B、TestClass&(TestClassx)C、TestClass(TestClass木x)D、TestClass(TestClass&x)标准答案:D知识点解析:C++中的拷贝构造函数是用一个已知的对象初始化一个正在创建的同类对缘。拷叭构造函数的一般格式如下:(类名)::(类名)(const,(类名)&<引用对象名));其中const可以省略。33、下面关于指针的说法中错误的是()。A、在指针定义的同时可以对其进行初始化B、指针根据其所指向变量的类型的不同,所占用内存大小也不同C、指针中存放的是内存单元的地址D、相同类型的指针之间可以相互赋值标准答案:B知识点解析:指针是一种用来存放其他变量地址的数据类型,它的声明形式为:(类犁)*(变鲢名),可以在声明的时候对其进行初始化。由于其存放的是内存单元的地址,所以大小一一般都是4个字节34、下面不属于C++的预定义的流对象是()。A、cinB、iostreamC、clogD、Celt标准答案:B知识点解析:C++中的四个预定义流对象:cout,cin,cerr,clog。35、下列程序执行后,屏幕的输出是()。#includeusingnamespacestd;voidswap(intx,intY){inttemp=x:x=y;y=temp;cout<<“x=”<A、x=3,y=2x=3,y=2B、x=2,y=3x=3,y=2C、x=2,y=3x=2,y=3D、x=3,Y=2x=2,Y=3标准答案:B知识点解析:C++中默认的参数传递是值传递,也就是将实参的副本传递给被调用函数的形参,被调用的函数中对形参的任何改动都不会影响实参。36、在每个C++程序中必须有且仅有一个()。A、函数B、主函数C、预处理指令D、语句标准答案:B知识点解析:在每一个c++程序中必须有且只有一个主函数,每个程序的执行都是从主函数的开始。37、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<“A”;});classB{public:B0{cout<<“B”;));classC:publicA{Bb:public:c(){cout<<“C”;)};intmain0{Cobj;return0;)执行后的输出结果是()。A、ABCB、BACC、ACBD、CBA标准答案:A知识点解析:c++程序中的执行子类,首先执行基类的构造函数,然后执行数据成员类的构造函数,最后执行子类本身的构造函数,所以输出结果为ABC。二、基本操作题(本题共1题,每题1.0分,共1分。)38、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:10TestC!lass1注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//***error***的下面。#includeclassTestClassl{public:TestClassl0{};//********error********private:virtual-TestClassl(){usingnamespacestd;cout<<"TIestClass1"<mi=i;)voidprint(){//********error********cout<标准答案:(1)删除“private:”语句(2)TestClass2(inti)(3)std::cout<知识点解析:程序要求输出值为10,TestClassl。从已给定源程序的main主函数开始入手,main主函数首先调用fun函数,fun调用TestClass2中的print()函数,其中TestClass2继承了TestClassl。【解题思路】(1)第1个标识下的“virtual一Test(~lassl()”语句是TestClassl()析构函数,不是私有函数,所以删除“private:”。(2)“explicitTestClass2(inti)”构造函数语句中的“explicit”是禁止隐式转换。程序中无法实现对类TestClass2的直接使用,所以这里应该将其删除。即“Test(3ass2(intil”。(3)第3个标识下实现,fun函数中mi的标准输出,即在屏幕上输出10。在程序中用到C++标准库时,要使用std标准命名空间进行限定。cout为标准库函数,所以要声明cout是在命名空间std中定义的流对象,即“std::cout<三、简单应用题(本题共1题,每题1.0分,共1分。)39、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s),该函数完成以下功能:(1)把S中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。并且在函数中调用写函数WriteFile0将结果输出到modi2.txt文件中。例如:s=“helloTEST”,则结果为:s=“HELLOtest”(2)完成函数WriteFile(char*s),把字符串输入文件中。提示:打开文件使用的第二参数为ios_base::binarylios—base::app。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。#include#include#includeusingnamespacestd;voidWriteFile(char*s){}voidfun(char*s){}voidClearFile(){ofstreamoutl;outl.open(“modi2.txt”);out1.close();}intmain(){ClearFile0;chars[1024];cout<<“pleaseinputastring:”<标准答案:(1)voidWriteFile(char*s)中的命令语句:ofstreamoutl:outl.open(“modi2.txt”,ios—base::binaryJios—base::app);//打开文件modi2outl<<s;//写入字符串sout1.close();(2)yoidfun(char*s)中的命令语句:for(inti=O;s[i]!=O;i++)//循环判断每一个字符{if(s[i]>=’A’&&s[i]<=‘z’)//如果是大写字符,转换为小写字符{s[i]=s[i]=‘A’+‘a’;//s[i]-’A’+’a’等于字符s[i+32])Elseif(s[i]>=‘a’&&s[i]<=‘z’)//如果是小写字符,转换为大写字符{s[i]=s[i]-‘a’+‘A’;//s[i]-‘a’+“A”等于字符s[i]-32}}WriteFile(s);知识点解析:(1)本题要求实现两个函数的功能,其中writeFile(char*s)实现把字符串输入到文件中;fun(char*s)函数实现大写字母转换成小写字母,把其中的小写字母转换成大写字母。其中大小写字母之间的AscII码差为32。(2)从已给部分源程序的main主函数开始入手,首先实现writeFile函数,然后再实现fun函数,并在其中调用writeFile函数。【解题思路】(1)在writeFile(char*s)函数中,利用标准流ofstream实现字符串写入文件modi2.txt。(2)在fun函数中,利用for循环逐个判断字符是大写还是小写。(3)如果是大写,那么加卜32实现大写转换为小写。甭则,就减去32,实现小写到大写的转换。最后调用前面实现的writeFile函数,将字符串写入文件。四、综合应用题(本题共1题,每题1.0分,共1分。)40、用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照定义的输出修改函数,使得输出如下:TestClass3TestClass2TestClass1其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。(1)类TestClass2公共继承于TestClassl,请在注释∥********1********后添加适当的语句。(2)print函数为虚函数,请在注释∥********2********后添加适当的语句。(3)修改语句,使得P指定对象obj3,请在注释∥********3********后添加适当的语句。(4)修改语句,利用P调用print()~数,完成输出信息,注释∥********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#includeusingnamespacestd;classTestClass1{public:voidprint(){cout<<"TestClass1"<标准答案:(1)将“classTestClass2”补充完整为:class17estClass2:publicTestClassl(2)将“voidprjnt()”补充完整为:virtualvoidprint()(3)将“p=obj3;”修改为:p=&obj3;(4)将“p.print();”修改为:p一>print();知识点解析:本题的功能是通过print虚函数将字符串输出。在VC:环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从己定源程序的main主函数开始入手,可以看出程序通过调用类和成员函数实现各种输出操作。【解题思路】(1)题日1要求“类TLest(:lass2公共继承于TestClassl”。从已有的类产生一个新的子类,成为类的派生。声明派生类的一般形式为:class派生类名:[继承方式]基类名。根据题目中的要求以及派生类的一般形式,第1个标识下添加语句“classTestClass2:publicTestClassl”。(2)题目2要求“print函数为虚函数”。存C++中,用virtual声明的函数为虚函数,因此第2个标识下的语句修改为“virtualvoidprint()”。(3)题目3要求“使得p指定对象obj3”。p为指针变量,obj3为类的对象,将一个指针变量指向另一个变量,只要把被指向的变量的地址赋给指针变量即可。取对象ob{3地址的语句为&obj3,所以这早补全“p=&obj3;”。(4)题目4要求“利用p调用print()函数”。c++中用”.>”运算符实现成员访问,因此调用print()函数,戍将第4个标识下修改为“p一>print();”。国家二级(C++)机试模拟试卷第2套一、程序改错题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的工程test30_1,此工程包含一个源程序文件test30_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:Previous=9,Next=11源程序文件test30_1.cpp清单如下:#include<iostream.h>/*****************found*****************/voidprevnext(int,int&,int&);intmain(){intx=10,y,z;prevnext(x,y,z);cout<<"Previous="<<y<<",Next="<<z<<end1;return0;}/*****************found*****************/voidprevnext(intx,intprev,intnext){/*****************found*****************/prev=x--;next=++x;}标准答案:(1)错误:在main()函数前缺少prevnext函数的声明正确:voidprevnext(int,int&,int&);(2)错误:voidprevnext(intx,intprev,intnext)正确:voidprevnext(intx,int&prev,int&next)(3)错误:prev=x--;正确:prev=x-1;知识点解析:(1)函数在使用前必须已经被定义,main()中调用prevnext函数,而该函数的实现在main()之后,所以在main()之前必须添加该函数的声明;(2)由运行结果可知,通过函数prevnext调动要改变main()中的实参值,所以prey和next都应为引用型参数:(3)由运行结果prev=x-1,而源程序的prev=x,x=x-1,这里涉及的是运算符的优先级问题。二、简单应用题(本题共1题,每题1.0分,共1分。)2、请编写一个函数fun(intscore[][3],intnum),该函数返回有一门成绩以上课程成绩在85分以上,其余课程成绩不低于70分的人数。数组score按行存放num名考生各自的三门期末考试成绩。注意:部分源程序已存在文件test31_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。程序输出结果如下:3文件test31_2.cpp清单如下:#include<iostream.h>intfun(intscore[][3],intnum){}voidmain(){intscore[4][3]={{70,89,92},{70,76,93},(80,86,98},{65,73,45});cout<<fun(score,4)<<end1;}标准答案:intfun(intscore[][3],intnum){inttotal=0;intflag=0;for(inti=O;i{for(intj=O;j<3;j++){if(score[i][j]<70){flag=-1;j=3;}elseif(score[i][j]>=85)flag=1;}if(flag==1)total=total+1;flag=0;}returntotal;}知识点解析:本题主要考查考生对数组和基本控制语句的熟练程度。对于4*3的二维数组score,其下标的范围是从(0,0)到(3,2),这一点是需要特别注意的。另外程序中通过设置,临时变量flag来标志每个人的分数信息,以得到所要统计的人数的方法是需要在编程中灵活掌握的。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的工程test29_3。此工程包含一个test29_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1**”之后添加适当的语句。(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**。”之后添加适当的语句。(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员2。请在注释“//**4**”之后添加适当的语句。输出结果如下;[1,2][3,4,5]注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件tese9_3.cpp清单如下:#include<iostream.h>classCoordinate{protected://**1**public:Coordinate(inta=0,intb=0);//**2**};Coordinate::Coordinate(inta,intb){//**3**}voidCoordinate::Display()const{cout<<’[’<<x<<","<<y<<’]’<<end1;}classThreeDCoord:publicCoordinate{intz;public:ThreeDCoord(inta=0,intb=0,intc=0);virtualvoidDisplay()const;};//**4**voidThreeDCoord::Display()const{cout<<’[’<<x<<","<<y<<","<<z<<’]’<<end1;}voidmain(){Coordinatec(1,2);ThreeDCoordt(3,4,5);c.Display();t.Display();}标准答案:(1)intx;inty;(2)virtualvoidDisplay()const;(3)x=a;y=b;(4)ThreeDCoord::ThreeDCoord(inta,intb,intc):Coordinate(a,b)知识点解析:本题主要考查考生对类数据成员的定义、构造函数、派生类及虚函数的理解,是C++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。国家二级(C++)机试模拟试卷第3套一、程序改错题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的工程test28_1,此工程包含一个源程序文件test28_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:55源程序文件test28_1.cpp清单如下:#include<iostream.h>classA{public:/*****************found*****************staticintn=1;A(){n++;};~A()(n--;};};/*****************found*****************intn=0;intmain(){Aa;Ab[3];A*c=newA;c=&a;/*****************found*****************cout<<c.n<<end1;cout<<A::n<<end1;return0;}标准答案:(1)错误:staticintn=1;正确:staticintn;(2)错误:intn=0;正确:intA::n=0;(3)错误:cout<<c.n<<end1;正确:cout<<c->n<<end1;知识点解析:(1)在类的声明中只能对静态数据成员进行引用性声明,不能进行静态数据成员的初始化:(2)由于静态数据成员是类的成员,所以在初始化时必须限定它所属的类:(3)c为类的对象指针,访问类成员函数时使用符号“->”,而不能用“.”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。例如:n为1000时,函数值应为s=153.909064。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<conio.h>#include<math.h>#include<stdio.h>doublefun(intn){}main(){clrscr();printf("s=%f\n",fun(1000));}标准答案:doublefun(intn){doubles=0.0;inti;for(i=0;i<n;i++)/*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/if(i%3==0&&i%7==0)s=s+i;s=sqrt(s);/*对s求平方根*/returns;}知识点解析:本题的解题思路是逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&及,’运算符。满足条什,该数就被累加到s中去,所有符合条件的数找完后,用sqd()函数(包含于头文件<math.h>中)对s求平方根。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的工程test27_3。此工程包含一个test27_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不是正数则输出错误信息并退出,否则申请int型的大小为i的空间,然后把i赋值给类的数据成员num。请在注释“//**1**”之后添加适当的语句。(2)完成类ARRAY的拷贝初始化构造函数,注意解决重复删除的问题,请在注释“//**2**”之后添加适当的语句。(3)完成类ARRAY的重载的运算符函数[],参数i为int型,如果i超界则输出错误信息并退出,否则把下标为i的元素返回,请在注释“//**3**”之后添加适当的语句。(4)完成类ARRAY的重载的运算符函数二,同样需要注意解决重复删除的问题,不能只是简单的赋值,请在注释“//**4**”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test27_3.cpp清单如下;#include<iostream.h>#include<stdlib.h>classARRAY{private:int*p,num;public:ARRAY(){p=newint[10],num=10;}ARRAY(inti){//**1**{cout<<“错误!数组长度应为正。\n”;exit(0);}p=newint[i];num=i;}ARRAY(constARRAY&a);int&operator[](inti);~ARRAY(){deletep;}ARRAY&operator=(constARRAY&a);friendARRAYoperator+(ARRAY&a,ARRAY&b);friendostream&operator<<(ostream&os,ARRAY&a);};ARRAY::ARRAY(constARRAY&a){//**2**for(inti=0;i<num;i++)p[i]=a.p[i];}int&ARRAY::operator[](inti){//**3**{cout<<“越界访问!”;exit(0);}returnp[i];}ARRAY&ARRAY::operator=(constARRAY&a){num=a.num;p=newint[num];for(inti=0;i<num;i++)p[i]=a.p[i];//**4**}ARRAYoperator+(ARRAY&a,ARRAY&b){if(a.num!=b.hum){cout<<“数组长度不相同!”<<end1;exit(0);}ARRAYt(a.num);for(inti=0;i<a.num;i++)t.p[i]=a.p[i]+b.p[i];returnt;}ostream&operator<<(ostream&os,ARRAY&a){inti=0;for(;i<a.num;i++){cout<<a.p[i]<<’’;if(!((i+1)%10))cout<<end1;}returnos;}voidmain(){ARRAYa(3);a[0]=a[1]=a[2]=3;cout<<’a’<<a<<end1;ARRAYb(a);cout<<’b’<<b<<end1;ARRAYc(2);c=a+b+b;cout<<’c’<<c<<end1;c=((b=(a+b))+c);cout<<’a’<<a<<’b’<<b<<’c’<<c<<end1;a[7]=3;cout<<a;}标准答案:(1)if(i<=0)(2)num=a.num;p=newint[num];(3)d(i>=num||i<0)(4)return*this;知识点解析:主要考查考生对于一个特殊的类——安全数组的掌握,其中涉及了友元函数、重载函数等,其中(2)中必需申请新的空间,这样可以使得两个对象分别占用不同的两个空间,在自动调用析构函数时不会遇到重复删除的问题,这种方法要掌握。国家二级(C++)机试模拟试卷第4套一、选择题(本题共38题,每题1.0分,共38分。)1、算法的有穷性是指()。A、算法程序的运行时问是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的基本特征主要包括以下四个方面:.可行性:针对实际问题而设计的算法,执行后能够得到满意的结果。.确定性:算法中的每一个步骤都必须有明确的定义,不允许有模棱两可的解释和多义性。.有穷性:算法必需在有限时间内做完,即算法必需能在执行有限个步骤之后终止。.拥有足够的情报:要使算法有效必需为算法提供足够的情报当算法拥有足够的情报时,此算法才最有效的;而当提供的情报不够时,算法可能无效。2、下列关于栈的描述中,正确的是()。A、在栈中只能插入元素B、在栈中只能删除元素C、只能在一端插入或删除元素D、只能在一端插入元素,而在另一端删除元素标准答案:C知识点解析:栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。3、在一棵二叉树中,叶子结点共有30个,度为1的结点共有40个,则该:二叉树中的总结点数共有()个。A、89B、93C、99D、100标准答案:C知识点解析:根据二叉树性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以该二叉树度为2的结点有29个,故总结点数=30个叶子结点+29个度为2的结点+40个度为1的结点=99个结点。4、对下列二叉树进行中序遍历的结果是()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA标准答案:C知识点解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树。②中序,按中序遍历左子树→访问根→按中序遍历右子树。③后序,按后序遍历左子树→按后序遍历右子树→访问根。所以对该二叉树的中序遍历结果为GDBEHACF。5、设有表示学生选课的三张表,学生表(学号,姓名,性别),课程表(课程号,课程名),选课成绩表(学号,课程号,成绩),则选课成绩表的关键字为()。A、课程号,成绩B、学号,成绩C、学号,课程号D、学号,课程号,成绩标准答案:C知识点解析:关键字是指属性或属性的组合,其值能够惟一地标识一个元组,而在选课成绩表中学号和课程号的组合可以对元组进行惟一的标识。所以学号与课程号组合作为选课成绩表的主键。6、详细设计主要确定每个模块具体执行过程,也称过程设计,下列不属于过程设计工具的是()。A、DFD图B、PAD图C、N-S图D、PDL标准答案:A知识点解析:DFD图(数据流图)是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,它是需求分析阶段的图形工具。盒式图(N-s图)、问题分析图(PAD图)和PDL,(伪码)是详细设计的常用工具。7、下列关于软件测试的目的和准则的叙述中,正确的是()。A、软件测试是证明软件没有错误B、主要目的是发现程序中的错误C、主要目的是确定程序中错误的位置D、测试最好由程序员自己来检查自己的程序标准答案:B知识点解析:软件侧试的目的:①软件测试是为了发现错误而执行程序的过程;②一个好的测试用例能够发现至今尚未发现的错误;③一个成功的测试是发现了至今尚未发现的错误。软件测试的准则:①所有测试都应追溯到需求;②严格执行测试计划,排除测试的随意性;③充分注意测试中的群集现象;④程序员应避免检查自己的程序;⑤穷举测试不可能;⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。8、在E-R图中,用()来表示实体之间联系。A、矩形B、菱形C、椭圆形D、正方形标准答案:B知识点解析:在E-R图中用矩形表示实体集,在矩形内写上该实体集的名字,用椭圆形表示属性,在椭圆形内写上该属性的名称,用菱形表示联系,菱形内写上联系名。9、在数据库系统中,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是()。A、外模式B、逻辑模式C、概念模式D、物理模式标准答案:A知识点解析:外模式也称子模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导出来的,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个概念模式可以有若干个外模式。10、设有如下关系表,由关系R和S通过运算得到关系T,则所使用的运算为()。A、T=RnSB、T=RUSC、T=RXSD、T=IVS标准答案:B知识点解析:T就是关系R中插入关系S,合并为T,即并运算(U)。11、下面的说法中错误的是()。A、公有继承的基类中public成员在派生类中仍是publicB、私有继承的基类中public成员在派生类中是privateC、公有继承的基类中private成员在派生类中仍是privateD、保护继承的基类中public成员在派生类中是protected标准答案:C知识点解析:类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是若基类成员的访问属性为private的,则不能被继承。12、函数定义如下:voidfun(intX,int&Y){x++;y++;}如果执行代码段:inta=0,b=1;fun(a,b);则变最a和b的值分别是()。A、0和1B、0和2C、1和lD、l和2标准答案:B知识点解析:本题中定义了一个fun函数,当调用fun(a,b);函数时,形参x和y被初始化为实参a和b的引用,参数x为非引用类型,参数y为引用类型,在执行该函数时,对形参x的改变不会影响到实参,形参y的改变将会影响到实参,因此调用fun函数后,形参变量x=1,y=2,实参变量a=0,b=2。13、执行下面语句后,输出字符”#”的个数是()。for(inti=50;i>1,--i)cout<<‘#’;A、48B、49C、50D、51标准答案:B知识点解析:for语句循环中的循环控制变量i的初始值为50,条件表达式“i>1”说明当i的值大于1时重复执行循环体;“--i”表示每循环一次减1。当i等于1的时候跳出循环,此时循环次数为49次。14、以下模板定义:templateTfun(TX,TY){returnx*x+y*y;}下面对fun的调用中错误的是()A、fun(2,6.5)B、fun(2,6.5)C、fun<>(2,6)D、fun(2,6)标准答案:B知识点解析:C++中声明函数模板的格式是:template<模板形参表声明><函数声明>,模板函数的调用可以省略实参模板,但实参模板的省略是有条件的。如果从模板函数实际参数列表中获得的信息有矛盾,则不能省略实际参数模板。15、类定义如下:classTestClass{public:TestClass0{cout<<1;}}:则执行语句TestClassa,b[2],木p[2];后,程序的输出结果是()A、11B、111C、1111D、11111标准答案:B知识点解析:classTestClass定义了一个类,其中TestClass(){cout<<1;}为其的构造函数,当程序创建类TestClass的实例时,该函数将会被调用,在执行“TestClassa,b[2],+p[2];”时,一共创建了三个这样的实例,故一共执行构造函数3次,对于变量p,则是声明了一个指针数组,该数组中的元素是指向类TestClass实例的指针,本身并没有创建类的实例。16、下面重载乘法运算符的函数原型声明中错误的是()。A、TestClassoperator*(MyClass,double);B、TestClassoperator*(double,MyClass);C、TestClassoperator*(double,double);D、TestClassoperator*(MyClass,MyClass);标准答案:C知识点解析:重载的运算符应该保持其原有的基本语义。重载的运算符应尽量保持其原有的特性。运算符的重载应当配套,至少要有一个形式参数是类的类型。17、下面关于this指针的说法中错误的是()。A、this指针是一种隐含指针,存在于每个类的非静态成员函数中B、它是成员函数所属对象的指针C、通过this成员变量的形式可以访问类中的数据成员D、成员函数访问类中的数据成员格式可写成:this.>成员变量标准答案:C知识点解析:this指针是一个隐含指针,它隐含于每个类的非静态成员函数中。this指针是成员函数所属的对象指针,它指向当前类的对象地址。通过this指针访问当前对象成员有两种方式:(*this)成员,this->成员。18、下面表示引用的方法中正确的是()。已知:intn=10;A、int&x=nB、int&zC、int&y=10D、float&t=&n标准答案:A知识点解析:C++中的引用作用是给变量起个别名,引用定义形式为:类型&引用名=变量名。19、一个C++程序由函数A(),B(),C()和函数P()构成,在函数A()中分别调用了函数B()和函数C(),在函数B()中调用了函数A(),且在函数P()中也调用了函数A(),则可以说()。A、函数B()中调用的函数A()是函数A()的间接递归调用B、函数A()被函数B()调用是直接递归调用C、函数P()直接递归调用了函数A()D、函数P()中调用的函数A()是函数P()的嵌套标准答案:A知识点解析:本题考查递归调用。递归调用分为直接递归和间接递归,A()属于间接递归。20、下面不正确的描述为()。A、调用函数时,实参可以是表达式B、调用函数时,实参与形参可以共用内存单元C、调用函数时,将为形参分配内存单元D、调用函数时,实参与形参的类型必须一致标准答案:B知识点解析:函数调用时用实参替换形参,如果实参为表达式,将为表达式的值创建一个临时对象,然后将该实参替换形参。替换的实质是变量间的拷贝,当然这种拷贝需要为形参分配内存。需要注意的是:形参在编译时不分配内存,在运行时才分配内存。21、存取指针所指的值时,采用的运算符是()。A、#B、&C、%D、*标准答案:D知识点解析:对指针所指向的地址取值时,采用的存取运算符为*。&为取地址符。22、已知语句intm=10;则下列表示引用的式子中正确的是()。A、int&x=m;B、int&v=10;C、int&z;D、float&t=&m;标准答案:A知识点解析:引用比较特殊,即必须指向一个已有的同类型变量。引用是已有变量的别名,故选项C)是错误的,选项D)中变量类型不同,而选项B)中是常数。23、下面的程序输出结果是()。#includeintfac(inta);voidmain(){ints(0);for(inti(1);i<=5;i++)s+=fac(i);cout<A、153B、135C、0D、1标准答案:A知识点解析:静态类型空间的特点是一次分配在整个程序没有结束时,空间地址不会改变。函数中b的变量就是静态变量。24、执行如下程序将输出():#includeusingnamespacestd;classBase{public:Base(){cout<<“BB”;fun();)voidfun(){cout<<“Bfun”;}};classDerived:publicBase{public:Derived(){cout<<“DD”;)voidfun(){cout<<“Dfun”;)};intmain(){Derivedd;retum0;)A、DDB、BBDfunDDDfunC、BBBfunDDD、DDBBBfun标准答案:C知识点解析:C++中创建一个类的实例时,如果该类存在基类,将首先执行基类的构造函数,然后执行该类本身的构造函数。本题中首先执行类Base的构造函数,所以将先输出“:BB”,然后调用基类成员函数fun(),输出“Bfun”,最后调用子类Derived的构造函数输出“DD”。25、下面关于C++的特点中描述不正确的是()。A、C++是C语言的超集,大多数C程序在不用修改的情况下就可以在C++的集成环境中运行或调试B、C++是面向对象的程序设计语言C、C++中没有结构化编程的语句D、C++的执行效率很高标准答案:C知识点解析:C++是基于C语言发展起来的一种面向对象的高级语言,具有了面向对象程序设计语言的特征,同时具有结构化编程的思想。26、有如下程序:#includeusingnamespacestd;classTestClass{public:TestClass0{cout<<“defaultconstructor/n”;)TestClass(constTestClass&x){cout<<“copyconstructorLn”;}};TestClassuserCode(TestClassb){TestClassc(b);returnc;)intmain(){TestClassa,d;cout<<“callinguserCode()\n”;d=userCode(a);return0:}在执行过程中,构造函数TestClass()和TestClass(constTestClass&x)被调用的次数分别是()。A、1和1B、1和2C、2和3D、2和4标准答案:C知识点解析:在主函数中定义了两个TestClass类型的变量a,d,因此执行两次构造函数YestClass()。接下来执行d=userCode(a);,在执行该函数时,由于userCode采用了传值方式来传递参数,所以要调用一次TestClass(constTestClass&x)。在函数userCode内部TestClassc(b);语句又调用了一次拷贝构造函数,由于函数userCode返回的不是引用,而是一个TestClass变量,所以还需要执行一次拷贝构造函数,所以一共要执行两次普通构造函数(非拷贝构造函数)与三次拷贝构造函数。27、由于常对象不能被更新,所以()。A、利用常对象可以调用任何不改变对象值的成员函数B、利用常对象只能调用静态成员函数C、常对象的成员都是常成员D、利用常对象只能调用它的常成员函数标准答案:D知识点解析:如果一个成员函数没有声明为常成员函数,即使没有改变对象本身的成员值,也不能被常对象调用,所以A)不正确。常对象除了可以调用静态成员函数外,还可以调用常成员函数,所以B)不正确。常对象中可以有非常成员函数,所以C)也不正确。常对象只能调用对象的常成员函数,而不调用普通成员函数,故D)选项正确,28、下面的符号中不属于C++关键字的是()。A、friendB、byteC、continueD、namespace标准答案:B知识点解析:关键字又被称为保留字,它是由C++语言本身预先定义好的一类单词。详见C++关键字表。29、下面的语句中动态分配的内存,其释放语句正确的是()。int*q=new[10];A、deleteq;B、deleteq[0];C、delete[]q;D、delete*q;标准答案:C知识点解析:C++中对于用new分配的多个内存空间,可以用delete[]name,将所分配的所有内存释放掉。30、下面有关内联函数的叙述中,正确的是()。A、内联函数体的最后一条语句必须是retum语句B、内联函数必须通过关键字inline来定义C、内联函数通过编译器来实现的D、内联函数在调用时发生控制转移标准答案:C知识点解析:C++中的内联函数可以有,也可以没有return语句。使用mlme关键字来定义内联函数,放在函数定义中函数类型之前。内联函数在程序执行时并不产生实际函数调用,而是在函数调用处将函数代码展开执行。内联函数是通过编译器来实现的。在类中直接定义的函数默认为内联函数。31、有如下程序:#include#includeusingnamespacestd;classTestClass{public:TestClass(){cout<<’A’;)TestClass(charc){cout<’B’;)};intmain(){TestClassp1,*p2;p2=newTestClass(‘X’);deletep2;return0:}执行这个程序的结果是()。A、ABXB、ABXBC、AXBBD、AXB标准答案:C知识点解析:在定义对象p1时由系统自动调用构造函数TestClass(),输出字母A;用new创建单个对象TestClass(’x’)时,要根据参数调用相应的构造函数TestClass(charc),输出字母X;在执行delete时,系统会自动调用析构函数一TestClass(),输出字母B,当对象的生存周期即将结束时系统会自动调用析构函数~TestClass(),输出字母B。32、下面关于友元的说法中错误的是()。A、友元函数可以访问类中的所有数据成员B、友元函数不可以在类内部定义C、友元类的所有成员函数都是另一个类友元函数D、友元函数必须声明在public区标准答案:D知识点解析:友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。类可以利用friend将一般函数、其他类成员函数或者其他类声明为友元。友元的声明可以放在类的任何一个区域。但是友元的实现不可以在类内部。33、虚函数()是可以不同的。A、函数名B、参数个数C、返回类型D、函数体内容标准答案:D知识点解析:在C++中的虚函数是一种单界面多实现版本的实现方法,即函数名、返回类型、函数类型和个数顺序完全相同,但函数体内容可以完全不同。34、有如下程序:#includeusingnamespacestd;classBase{public:Base(inti){x=i;)voiddispa(){cout<A、2,2B、12,2C、12,10D、10,2标准答案:B知识点解析:”Derivedb(2);”以整数2实例化变量b,在执行Derived的构造函数时,以i+10即12去调用类Derived的父类的构造函数,将Base::x初始化为12,然后将Derived::x赋值为2。在执行b.dispb()时,先调用父类中的dispa,输出Base::x,即12,再输出Derived::x,即2,所以运行结果为“12,2”。35、下面关于运算符重载的描述中,正确的是()。A、一元运算符只能作为成员函数来重载B、运算符重载作为成员函数时,如果参数表中无参数,重载的是一元运算符C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:B知识点解析:一元运算符可以作为全局函数重载,所以选项A)错误。二元运算符重载为非成员函数时,参数表中有两个参数,所以选项C)也错误。C++中有些运算符不能被重载,如域运算符(::),条件运算符(?:)等,具体哪些运算符不能被重载与编译器有关,所以选项D)错误。36、在“intb[][3]={{1},{3,8},{4,5,7),{011;”中,b[2112]的值是()。A、0B、7C、1D、8标准答案:B知识点解析:数组可以在定义的时候给出其初始化的值,如果所给的数值比数组的数目少。则后面缺省的是0。37、下面的程序输出结果是()。#includeusingnamespacestd;voidadd(){staticintx:x++:cout<A、111B、123C、222D、333标准答案:B知识点解析:程序中的静态变量在整个程序的运行过程中,一直占有其分配的空间,每次运行的结果将被保留。38、若磁盘上已存全路径文件名为c:\ctest\test.txt的文件,下面语句中不能打开该文件的是()。A、ifstream*pFile=newifstream(”c:\\ctest\\test.txt”);B、ifstreamfile(”c:\\ctest\\test.txt”);C、ifstreamfile;file.open(”c:\\ctest\\test.txt”);D、ifstreamfile(“c:\ctest\test.txt”);标准答案:D知识点解析:由于“\”在C++中用来定义转义字符,所以必须对文件名字符串中的“\”进行转义,所以只有选项D)不正确。二、基本操作题(本题共1题,每题1.0分,共1分。)39、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除一条语句。本程序完成以下功能:(1)获得输入的两个数字x1,x2(例如x1=4,x2=2);(2)输出两个中较小的一个(例如输出2);(3)计算x1/x2如果x2等于0,返回-1(输出结果2):(4)输出x1+x2的结果(输出结果6):(5)输出x1+1的结果(输出结果5):(6)输出x2-1的结果(输出结果1)。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******料的下面。#includevoidmain(){intX1;intx2;intx3:cout<<”pleaseinputtwonumber:”<>x1>>x2://******error******x3=(x1>x2)?x1:x2;cout<<“Minnumberis:”<标准答案:(1)x3=(x1知识点解析:本题首先求输出两个数字中的最小值,然后计算两个数相除的值,然后求得第一个数与第二个数的和,最后输出“x1+1”和“x2—1”的值。解题思路主要是要从main()主函数入手,依次完成题干中要求的各个要求。[解题思路](1)第1个标识下“x3=(x1>x2)?x1:x2;”语句是判断x1与x2其中哪个相对较小,并将其赋值给x3。条件运算符的格式:表达式l?表达式2:表达式3。执行顺序是先求解表达式1,若非则求解表达式3,此时表达式3的值就作为整个条件表达式值。所以求x1和x2中较小的一个,如果x1三、简单应用题(本题共1题,每题1.0分,共1分

温馨提示

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

最新文档

评论

0/150

提交评论