第一章测试题一.单选题1:一个函数功能不太复杂,但要求被频繁调用,选用_______。(A)内联函数(B)重载函数(C)递归函数(D)嵌套函数答案A2:在C++中,函数原型不能标识_______。(A)函数的返回类型(B)函数参数的个数(C)函数参数类型(D)函数的功能答案D3:下面函数模板定义中不正确的是_______。(A)(B)(C)(D)答案A4:在C++中把不返回任何类型的函数应该说明为_______。(A)int(B)char(C)void(D)double答案C5:若Sample类中的一个成员函数说明如下:voidSet(Sample&*a),则Sample&a的含义是_______。(A)指向类Sample的名为a的指针(B)a是类Sample的对象引用,用来作函数Set()的形参(C)将a的地址賦给变量Set(D)变量Sample与a按位与的结果作为函数Set的参数答案B6:与C语言printf(Hello,World\n);语句功能相同的C++语句是_______。(A)cout»MHello,World\nM(B)cout«nHello,World\nM(C)cin»Hello,World\n(D)cin«Hello,World\n答案B7:实现两个相同类型数加法的函数模板的声明是_______。(A)add(Tx,Ty)(B)Tadd(x,y)(C)Tadd(Tx’y)(D)Tadd(Tx,Ty)答案D8:C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是_______。(A)增加了一些新的运算符(B)允许函数重载,并允许设置缺省参数(C)规定函数说明符必须用原型:(D)引进了类和对象的概念答案D9:下列符号不能组成标识符的是_______。(A)连接符(B)下划线(C)大小写字母(D)数字字符答案A10:类型修饰符unsigned不能修饰_______。(A)char(B)int(C)longint(D)float答案D11:在inta=3,int*p=&a;中,*p的值是_______。(A)变量a的地址值(B)无意义(C)变量p的地址值(D)3答案D12:下列关于指针的操作中,错误的是_______。(A)两个同类型的指针可以进行比较运算(B)可以用一个空指针赋给某个指针(C)一个指针可以加上两个整数之差(D)两个同类型的指针可以相加答案D13:重载函数在调用时选择的依据中,错误的是_______。(A)函数的参数(B)参数的类型(C)函数的名字(D)函数的类型答案A14:字符串“a+b=12\n”的长度为_______。(A)6(B)7(C)8(D)9答案B15:假定一个二维数组的定义语句为“丨1^&[3][4]={{3,4},{2,8,6}};”,则元素釓2][1]的值为_______。(A)0(B)4(C)8(D)6答案A16:以下描述正确的是_______。(A)函数的定义可以嵌套,函数的调用不可以嵌套(B)函数的定义不可以嵌套,函数的调用可以嵌套(C)函数的定义和函数的调用均可以嵌套(D)函数的定义和函数的调用均不可以嵌套答案B17:设有定义“doublearray[10];”,则表达式sizeo£(array)/sizeof(array[0])的结果为()。(A)array数组首地址(B)array数组中元素个数(C)array数组中每个元素所占的字节数(D)array数组占的总字节数答案B18:有如下程序段:执行该程序段后,*p的值为_______。(A)4(B)2(C)1(D)NULL答案B19:在每个C++程序中都必须包含有这样一个函数,该函数的函数名为_______。(A)main(B)MAIN(C)name(D)function答案A20:设x和y均为bool量,则x&&y为真的条件是_______。(A)它们均为真(B)其中一个为真(C)它们均为假(D)其中一个为假答案A21:下面的_______保留字不能作为函数的返回类型。(A)void(B)int(C)new(D)long答案C22:程序设计中,首先在问题域中识别出若干个_______。(A)函数(B)类(C)文件(D)过程答案B23:运算结果类型相同的是_______。(A)9.0/2.09.0/2(B)9/2.09/2(C)9.0/29/2(D)9/29.0/2.0答案A二.填空题1:所有模版都是以_______关键字和一个形参表开头的。答案template2:C++是通过运用运算符_______来定义一个引用的。答案3:若y是x的引用,则对y的操作就是对_______的操作。答案x4:执行_______操作将释放由P所指向的动态分配的数据空间。答案delete5:表达式coutendl还可表示为_______。答案6:将关键字const写在成员函数的_______和_______之间时,所修饰的是this指针。答案函数头(或参数表)。函数体7:C++中语句constchar*constp=hello〃;所定义的指针p和它所指的内容都不能被_______。答案改变(或重新赋值)8:将关键字_______写在函数体之前函数头之后,说明该函数是一个const成员函数,可以防止函数改变数据成员的值。答案const9:对象的三大基本特性是多态性、_______、封装性。答案抽象10:C++语言的函数参数传递方式有传值和_______。答案传地址11:多行注释的开始标记符和结束标记符分别为_______和_______。答案/*。*/12:假定x=5,y=6,则表达式x++*++y的值为_______。答案3513:假定x是一个逻辑量,则x&&tnie的值为_______。答案x14:若需要把一个字符串“aaa”賦值到字符数组a中,则箝要执行_______字符串函数的调用来实现。答案strcpy15:程序的编译是以_______为单位进行的。答案文件16:一个数组的数组名实际上是指向该数组的_______都不允许_______它。答案第一个。修改17:指针变量pv和pc定义为“void*pv:pc,则正确的赋值语句是_______。答案pc=(Char*)pv三.简答题1:请根据你的了解,叙述C++的特点。C++对C有哪些发展?答案略2:—个C++的程序是由哪几部分构成的?其中的每一部分起什么作用?答案略3:从拿到一个任务到得到最终结果,一般要经过几个步骤?答案略4:请说明编辑、编译、连接的作用。在编译后得到的目标文件为什么不能直接运行?答案略5:答案6:答案7:答案8:答案四.程序填空题1:下列程序是求小于PP的所有素数,请完成程序。答案2:下面是对按从小到大排列的有序数组a[n]中进行二分查找x的箅法,若查找成功返回该元素下标,否则返回-1。答案五.问答题1:分析下面程序运行的结果。答案ThisisaC++program2:分析下面程序运行的结果。答案a+b=333:分析下面程序,当输入为2,9,-3时给出输出结果。答案略4:修改程序。答案5:求2个数或3个正整数中的最大数,用带有默认参数的函数实现。答案6:输人两个整数,将它们按由大到小的顺序输出。要求使用变量的引用。答案7:对3个变量按由小到大顺序排序,要求使用变量的引用。答案8:编一程序,将两个字符串连接起来,结果取代第一个字符串。要求用string方法。答案9:输入一个字符串,把其中的字符按逆序输出。如输人LIGHT,输出THGIL。要求用string方法。答案10:有5个字符串,要求将它们按由小到大的顺序排列,用string方法。答案11:编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。用重载函数实现。答案12:对第11题改用函数模板实现,并与11题程序进行对比分析。答案第二章测试题一.单选题1:有关类的说法错误的是_______。(A)类是一种用户自定义的数据类型(B)只有类的成员函数才能存取类中的私有数据(C)在类中,如果不作特别说明,所指的数据均为私有数据(D)在类中,如果不作特别说明,所指的成员函数均为公有类型答案D2:有关类和对象的说法错误的是_______。(A)对象是类的一个实例(B)任何一个对象只能属于一个具体的类(C)—个类只能有一个对象(D)类与对象的关系和数据和变量的关系相似答案C3:关于成员函数特征的描述中,_______是错误的。(A)成员函数一定是内联函数(B)成员函数可以重载;(C)成员函数可以设置参数的默认值(D)成员函数可以是静态的答案A4:已知p是一个指向SampLe数据成员m的指针,s是类Sample的一个对象。如果要给m赋值为5,_______是正确的。(A)s.p=5(B)s—p=5(C)s.*p=5.(D)*s.p=5答案C5:已知一个类Sample,()是定义指向类Sample成员函数的指针,假设类有.3个公有成员:voidfl(int),voidf2(int),inta。(A)Sample*p(B)intSample::*pc=&•Sample::a(C)void(Sample::*pa)(int)(D)Sample*a[10]答案C6:已知fUim)是类A的公有成员函数,p是指向成员函数fl的指针,采用賦值_______是正确的。(A)p=fl(B)p=A:;fl(C)p~A::fl()(D)p==fl()答案B7:下列定义中,Sample是一个类,_______是定义指向对象数组的指针。(A)Sample*p[5](B)Sample(*p)[5](C)(Sample*)p[5](D)Sample*p[]答案B8:_______是给对象取一个别名,它引人了对象的同义词。(A)指针(B)引用(C)枚举(D)结构答案B9:下列表示引用的方法中,_______是正确的。已知:intm=10(A)int&.x=m(B)int&.y=10G.int&z(C)int&.z(D)float&t=&m答案A10:在_______情况下适宜采用inline定义内联函数。(A)函数体含有循环语句.(B)函数体含有递归语句(C)函数代码少、频繁调用(D)函数代码多、不常调用答案C11:在类中声明转换函数时不能指定_______。(A)参数(B)访问权限(C)操作(D)标识符答案C二.填空题1:对象的三大基本特性是多态性、_______、封装性。答案抽象2:被定义为形参的是在函数中起:_______作用的变量,形参只能用_______表示,实参的作用是_______,实参可以用_______、_______、_______表示。答案自变蛩。变量名。将实际参数的值传递给形参。具有值的变量。常量。表达式3:引入类定义的关键字是_______。类的成员函数通常指定为_______,类的数据成员通常指定为_______。指定为_______的类成员可以在类对象所在域中的任何位置访问它们。通常用类的_______成员表示类的属性,用类的_______成员表示类的操作。答案Class。公有的public。私有的private。公有的public。数据。函数4:类的访问限定符包括_______、_______和_______。私有数据通常由_______函数来访问(读和写)。这些函数统称为_______。答案public(公有的)。private(私有的)。protected(保护的)。公有的成员函数。类的接口5:通常在逻辑上,同一类的每个对象都有_______代码区,用以存储成员函数。而在物理上通常只有_______代码区。只有在_______定义,并_______的函数和加了关键字_______的函数例外。答案独立的。共用的。在类说明中。不包括循环等复杂结构。Mnline6:C++中支持_______、_______、_______三种域。函数域被包括在_______中,全局域被包括在_______中。using指示符以关键字using开头,后面是关键字___