C 程序设计-全国-1610_第1页
C 程序设计-全国-1610_第2页
C 程序设计-全国-1610_第3页
C 程序设计-全国-1610_第4页
C 程序设计-全国-1610_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1610-全国-C++程序设计总分:100一、单选题(共20题,共20分)1、类模板template<;classT>;class?({…};,其中友元函数f对特定类型T(如int),使函数f(X<;int>;&;)成为X<;hat>;模板类的友元,则其说明应为()。(1分)A:friendvoid“);B:friendvoidf(X<;T>;&);C:friendvoidA::f();D:friendvoidC(T);2、下列哪个函数不是类的成员函数()。(1分)A:构造函数B:析构函数C:友元函数D:拷贝构造函数3、下列字符常量的写法中,错误的是()。(1分)A:′\t′B:“b”C:′*′D:′a′4、cout是C++的()(1分)A:关键字B:对象C:类D:运算符5、在编译指令中,宏定义使用指令()。(1分)A:#defineB:#includeC:#typedefD:#friend6、C++类体系中,不能被派生类继承的有()。(1分)A:静态数据成员B:构造函数C:常数据成员D:静态成员函数7、用运算符delete删除—个动态对象时()。(1分)A:首先为该动态对象调用构造函数,再释放其占用的内存B:首先释放该动态对象占用的内存,再为其调用构造函数C:首先为该动态对象调用析构函数,再释放其占用的内存D:首先释放该动态对象占用的内存,再为其调用析构函数8、动态编联所支持的多态性称为运行时的多态性,支持的函数是()。(1分)A:构造函数B:友元函数C:继承D:虚函数9、进行文件操作时需要包含头文件()。(1分)A:iostreamB:fstreamC:stdioD:stdlib10、下列对派生类的描述中,错误的是()。(1分)A:派生类至少应有一个基类B:派生类的成员除了自己定义的成员外,还包含了它的基类成员C:基类中成员访问权限继承到派生类中都保持不变D:一个派生类可以作为另一个派生类的基类11、下列有关重载函数的说法中错误的是()。(1分)A:重载函数必须具有不同的返回值类型B:重载函数名必须相同C:重载函数参数个数可以不同D:重载函数必须有不同的形参列表12、下列关于纯虚函数与抽象类的描述中,错误的是()(1分)A:纯虚函数是一种特殊的函数,它允许没有具体的实现B:抽象类是指具有纯虚函数的类C:一个基类的说其中有纯虚函数,该基类的派生类一定不再是抽象类D:抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出13、如果A是抽象类,刚下面正确的是()。(1分)A:A中没有纯虚函数B:Aa;C:Aa[3];D:A*pa;14、在下面有关析构函数特征的描述中,正确的是()。(1分)A:一个类中可以定义多个析构函数B:析构函数名与类名完全相同C:析构函数不能指定返回类型D:析构函数可以有一个或多个参数15、假定有类AB,有相应的构造函数定义,能正确执行″ABa(4),b(5),c[3],*p[2]={&a,&b};”语句,请问执行完此语句后共调用该类析构函数的次数为()。(1分)A:14B:5C:3D:116、一个函数的功能不太复杂,但要求被频繁调用,选用最适合的是()。(1分)A:内联函数B:重载函数C:​递归函数D:嵌套函数17、若有说明:intn=2,*P=&n,*q=p;,则以下非法的赋值语句是()。(1分)A:n=*qB:p=nC:p=qD:*q=*p18、假设声明了以下的类模板,错误的调用语句是()template<;classT>;Tmax(Tx,Ty){return(x>;y)?x:y;}并定义了inti;charc;(1分)A:max(i,i)B:max(c,c)C:max((int)c,i)D:max(i,c)19、下面说法正确的是()(1分)A:生成对象时调用析构函数B:定义类时必须写出该类的构造函数C:调用构造函数时必须在主函数中明确写出调用格式D:析构函数不可以重载20、派生类的对象对它的哪一类基类成员是可以访问的()。(1分)A:公有继承的基类的公有成员B:公有继承的基类的保护成员C:公有继承的基类的私有成员D:保护继承的基类的公有成员二、填空题(共20题,共20分)21、对象的______只能由这个对象的操作来存取。(1分)22、语句″______;″用来向屏幕输出显示信息″Hello!″。(1分)23、C++程序有且只能有一个名为______的主函数。(1分)24、C++注释方式″//″的有效范围从″//″至______结束。(1分)25、______是类的实例。(1分)26、使用关键字inline说明的函数称为______函数。(1分)27、面向对象的程序设计方法是以______代表求解问题的中心环节。(1分)28、表达式″20/3*sqrt(4.0)/5″值的数据类型是______。(1分)29、动态分配内存使用关键字______,释放内存使用关键字delete。(1分)30、所谓″______″就是将一个新标识符和一块已经存在的存储区域相关联。(1分)31、说明纯虚函数的一般形式为”class类名{______函数类型函数名(参数列表)=0;};″。(1分)32、insert(iteratorit,constT&;)是向it所指向量位置前______一个对象。(1分)33、对MyFirst类定义析构函数是______。(1分)34、使用关键字const修饰的数据成员称为______数据成员。(1分)35、关键字private、public和______以后的成员分别叫做私有成员、公有成员和保护成员。(1分)36、函数重载可使一个函数名具有多种功能,称这种特性为______。(1分)37、C++函数的返回值类型可以是除______和函数以外的任何类型。(1分)38、将对象作为函数参数,是将实参对象的值传递给______。(1分)39、类对象一般都包括数据成员和______。(1分)40、运算符重载需要使用关键字″______″。(1分)三、综合题(共5题,共20分)41、类book,含有2个数据成员num编号和price价格,有成员函数set和display分别输入和显示书的编号和价格,在main中调用所有成员函数。在横线处填入适当内容使程序完整。(4分)1.2.(4分)42、一个通讯录contacts有姓名name和电话tel两个属性,有三个成员函数searchN、insertN和deleteN分别完成查找、插入和删除功能,请完成contacts的类图。(4分)1.2.(4分)43、完成程序空白处,可参考以下运行结果:4!=24n=-21不能计算n!程序执行结束(4分)1.2.(4分)44、程序用于在屏幕上显示指定的文本文件的内容。(4分)程序用于在屏幕上显示指定的文本文件的内容。1.2.(4分)45、完成程序空白处(4分)1.2.(4分)四、文字题(共8题,共40分)46、以下程序中各有一处错误,请在“答题卡”上抄写有错误的语句并给出修改意见。(4分)47、以下程序中各有一处错误,请在“答题卡”上抄写有错误的语句并给出修改意见。(4分)48、以下程序中各有一处错误,请在“答题卡”上抄写有错误的语句并给出修改意见。(4分)49、以下程序中各有一处错误,请在“答题卡”上抄写有错误的语句并给出修改意见。(4分)50、以下程序中各有一处错误,请在“答题卡”上抄写有错误的语句并给出修改意见。(4分)51、有一个Person类,私有数据成员name、age和sex分别表示人的姓名、年龄和性别。雇员类Employee是Person的派生类,新增数据成员部门department和薪水salary。请用C++代码描述这两个类,并用Employee类的成员函数Display实现雇员的姓名、年龄、性别、部门和薪水的输出。(要求编写派生类的构造函数)(10分)52、给出下面程序的输出结果(5分)53、给出下面程序的输出结果。(5分)

1610-全国-C++程序设计总分:100一、单选题(共20题,共20分)1、【考点】将成员函数用做友元答案:B解析:一个类的成员函数(包括构造函数和析构函数)可以通过使用friend说明为另一个类的友元。根据题目类模板template<;classT>;class?({…};,其中友元函数f对特定类型T,则其说明应为friendvoidf(X<;T>;&);。2、【主考点】类本身的友元函数【副考点】将成员函数用做友元答案:C解析:友元函数其实就是一般普通的函数,仅有的不同点是:它在类中说明,可以访问该类所有对象的私有成员。一个类的成员函数包括构造函数(包括拷贝构造函数)和析构函数。因此C选项不是类的成员函数。3、【考点】认识C++的函数和对象答案:B解析:单个字符常量是单引号括起来的,因此选择B选项。4、【考点】使用输出和输入对象答案:B解析:C++将数据从一个对象流向另一个对象的流动抽象为“流”。cout用来处理标准输出,即屏幕输出。为输出对象。因此B选项正确。5、【考点】宏定义答案:A解析:#define指令定义一个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。该标识符称为宏名,而将替换过程称之为宏替换。#define指令用以进行宏定义。6、【考点】派生类的构造函数和析构函数答案:B解析:构造函数(包括析构函数)是不被继承的,所以一个派生类只能调用它的直接基类的构造函数。因此选择B选项。7、【考点】析构函数和运算符delete答案:C解析:运算符delete与析构函数一起工作。当使用运算符delete删除一个动态对象时,它首先为这个动态对象调用析构函数,然后再释放这个动态对象占用的内存,这和使用new建立动态对象的过程正好相反。因此选择C选项。8、【考点】虚函数实现多态性的条件答案:D解析:关键字virtual指示C++编译器对调用虚函数进行动态联编,因此D选项正确。9、【考点】文件流答案:B解析:要打开一个输入文件流,需要定义一个ifstream类型的对象;要打开一个输出文件流,需要定义一个ofstream类型的对象;如果要打开输入输出文件流,则要定义一个fstream类型的对象。这三种类型都定义在头文件<;fstream>;里。10、【考点】第一节继承和派生的基本概念答案:C解析:当从现有类中派生出新类时,派生类可以有如下几种变化:增加新的成员(数据成员或成员函数);重新定义已有的成员函数;改变基类成员的访问权限。因此选择C选项。11、【考点】第四节函数重载和默认参数答案:A解析:函数重载可使一个函数名具有多种功能,即具有“多种形态”,称这种特性为多态性。从函数原型可见,它们的区别一是参数类型不同,二是参数个数不同。因此选择A选项。12、【考点】纯虚函数与抽象类答案:C解析:从一个抽象类派生的类必须提供纯虚函数的实现代码,或在该派生类中仍将它说明为纯虚函数,否则编译器将给出错误信息。这说明了纯虚函数的派生类仍是抽象类,因此C选项错误。13、【主考点】抽象和类【副考点】纯虚函数与抽象类答案:D解析:抽象是一种从一般的观点看待事物的方法,即集中于事物的本质特征,而不是具体细节或具体实现。即无具体的对象,B、C选项错误。抽象类至少含有一个虚函数,而且至少有一个虚函数是纯虚函数,以便将它与空的虚函数区分开来,因此A错误。D为指针,正确。14、【考点】定义析构函数答案:C解析:因为调用析构函数也是由编译器来完成的,所以编译器必须总能知道应调用哪个函数。最容易,也是最符合逻辑的方法是指定这个函数的名称与类名一样。为了与构造函数区分,在析构函数的前面加上一个“~”号。在定义析构函数时,不能指定任何返回类型,即使指定void返回类型也不行。析构函数也不能指定参数,但是可以显式地说明参数为void。从函数重载角度分析,一个类也只能定义一个析构函数且不能指明参数,以便编译系统自动调用。因此C选项正确。15、【考点】定义析构函数答案:B解析:析构函数在对象的生存期结束时被自动调用。类的对象数组的每个元素调用一次析构函数。因此共5次。16、【考点】第三节内联函数答案:A解析:使用内联函数能加快程序执行速度,但如果函数体语句多,则会增加程序代码的大小。使用小的内联函数在代码速度和大小上可以取得折衷,其他情况下取决于程序员是追求代码速度,还是追求代码的规模。当一个函数的功能不太复杂,但要求被频繁调用,适合选用内联函数。因此A选项正确。17、【主考点】左值和右值【副考点】认识C++的函数和对象答案:B解析:C++兼容C语言,因此p是指向int类型的指针,n是int类型的数据,不能p=n;18、【考点】类模板的成分及语法答案:D解析:类模板max声明了类型都为T的两个私有数据成员x,y,并且x,y类型相同。因此D选项错误。19、【主考点】定义析构函数【副考点1】默认构造函数【副考点2】自动调用构造函数答案:D解析:析构函数在对象的生存期结束时被自动调用,因此不可重载。A选项错误,D选项正确。当没有为一个类定义任何构造函数的情况下,C++编译器总要自动建立一个不带参数的构造函数,因此B选项错误。程序员不能在程序中显式地调用构造函数,构造函数是自动调用的,因此C选项错误。20、【考点】公有派生和赋值兼容规则答案:A解析:公有继承的基类的公有成员在派生类中保持公有访问权限,所以派生类对象可以访问它;公有继承的基类的保护成员在派生类中保持保护访问权限,所以派生类对象不可以访问它;基类的私有成员不能被派生到派生类中,所以派生类对象不可以访问它;保护继承的基类的公有成员在派生类中变成保护的访问权限,所以派生类对象不可以访问它。二、填空题(共20题,共20分)21、【考点】封装答案:属性解析:按照面向对象的封装原则,一个对象的属性和操作是紧密结合的,对象的属性只能由这个对象的操作来存取。22、【考点】使用输出和输入对象答案:cout<<"Hello!"解析:cout用来处理标准输出,即屏幕输出。即cout<;<;"Hello!"。23、【考点】混合型语言答案:main解析:C++程序以.cpp作为文件扩展名,并且必须有一个且只能有一个名为main的主函数。24、【考点】灵活的注释方式答案:本行解析:C++除沿用C语言的从“/*”开始,直到“*/”结束的注释方式之外,引入了更灵活的注释方式“//”,注释的有效范围从“//”至本行结束。25、【考点】类及其实例化答案:对象解析:对象就是一类物体的实例,将一组对象的共同特征抽象出来,从而形成“类”的概念。26、【考点】第三节内联函数答案:内联解析:使用关键字inline说明的函数称为内联函数。27、【考点】第三节面向过程与面向对象答案:对象解析:面向对象的程序设计方法是以对象代表求解问题的中心环节。它追求的是现实问题空间与软件系统解空间的近似和直接模拟。28、【主考点】新的基本数据类型及其注意事项【副考点】认识C++的函数和对象答案:double解析:sqrt(4.0)上,这是个浮点数,默认为double类型。因此表达式的数据类型是double类型。29、【考点】析构函数和运算符delete答案:new解析:当使用运算符delete删除一个动态对象时,它首先为这个动态对象调用析构函数,然后再释放这个动态对象占用的内存,这和使用new建立动态对象的过程正好相反。动态分配内存使用关键字new,释放内存使用关键字delete。30、【考点】引用答案:引用解析:所谓″引用″就是将一个新标识符和一块已经存在的存储区域相关联。因此,使用引用时没有分配新的存储区域,它本身并不是新的数据类型。31、【考点】纯虚函数与抽象类答案:virtual解析:说明纯虚函数的一般形式如下:class类名{virtual函数类型函数名(参数列表)=0;};32、【考点】在向量中插入对象的方法答案:插入解析:insert(iteratorit,constT&;):向it所指向量位置前插入一个对象。33、【考点】定义析构函数答案:~MyFirst(){}解析:因为调用析构函数也是由编译器来完成的,所以编译器必须总能知道应调用哪个函数。最容易、也最符合逻辑的方法是指定这个函数的名称与类名一样。为了与构造函数区分,在析构函数的前面加上一个“~”号。即答案为~MyFirst(){}。34、【考点】const对象答案:常解析:可以在类中使用const关键字定义数据成员和成员函数,其中const修饰的数据成员称为常数据成员。35、【考点】类的保护成员答案:protected解析:在类声明中,关键字protected之后声明的是类的保护成员。36、【考点】多态性答案:多态性解析:不同的对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为多态性。37、【考点】深入讨论函数返回值答案:数组解析:C++函数的返回值类型可以使除数组和函数以外的任何类型。非void类型的函数必须向调用者返回一个值。数组只能返回地址。38、【考点】对象作为函数参数答案:形参对象解析:将对象作为函数参数,是将实参对象的值传递给形参对象,这种传递是单向的。39、【考点】声明类答案:成员函数解析:类中定义的数据和函数称为这个类的成员(数据成员和成员函数)。因此类对象一般都包括数据成员和成员函数。40、【考点】运算符重载的实质答案:operator解析:运算符重载需要使用新的关键字“operator”,它和C++的一个运算符连用,构成一个运算符函数名。三、综合题(共5题,共20分)41、【主考点】封装性【副考点】认识C++的函数和对象答案:doubleprice,b.set()解析:根据题目要求定义变量,doubleprice,在main函数中调用成员函数b.set()即可。42、【考点】声明类答案:contacts,insertN(){}解析:定义一个类,根据题目要求通讯录为contacts即类名,以及成员函数insertN(){}。43、【主考点】使用输出和输入对象【副考点】认识C++的函数和对象答案:inti=1;i<=n;i++,"4!="<<f(4)解析:利用for循环将数字依次计算结果,在main()方法中利用cout输出结果,调用已定义好的函数。44、【考点】输出流的open函数答案:ifile.open(fn),cout<<ch解析:打开指定的文件,应使用输入流的open函数,使用默认构造函数建立对象,然后调用open成员函数打开文件。输出字符使用cout<;<;ch45、【考点】const修饰符和预处理程序答案:constdouble,doublelength(floatx,floaty)解析:π值为固定不变值,因此使用const修饰其为常量。周长为双精度浮点型,因此用double修饰。四、文字题(共8题,共40分)46、【考点】类模板的成分及语法答案:return(x>;y)?x:y;后面加}解析:类模板声明的一般方法为:template<;类模板参数>;class类名{//类体};类体中的函数体需要前后使用{}。47、【考点】类模板的成分及语法答案:template<;T>;改为template<;typanameT>;或template<;classT>;48、【考点】深入讨论函数返回值答案:intchange(strings)改为voidchange(strings)解析:C++函数的返回值类型可以是除数组和函数以外的任何类型。非void类型的函数必须向调用者返回一个值。49、【考点】引用作为函数参数答案:swap(&;a,&;b);改为swap(a,b);解析:在说明引用参数时,不需要提供初始值,其初始值在函数调用时由实参对象提供。50、【考点】第二节静态成员答案:in

温馨提示

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

评论

0/150

提交评论