C考试题库及复习资料精简.doc
精品文档C+期末考试题库一、单项选择题:1. 能作为C+程序的根本单位是( C )。 A. 字符 B. 语句 C. 函数 D. 源程序文件2. 程序中主函数的名字为 A 。 A. main B. MAIN C. Main D. 任意标识符3. 关于C+与C语言的关系的描述中,D是错误的。 A. C语言是C+的一个子集; B. C语言与C+是兼容的; C. C+对C语言进行了一些改良;D. C+和C语言都是面向对象的4. 可用作C+语言用户标识符的一组标识符是( B)。A. void define +WORD B. a3_b3 _123 YNC. for -abc Case D. 2a DO sizeof5. 存储以下数据,占用存储字节最多的是 D。 A. 0 B. 0 C. “06. 设int a=12;那么执行完语句a+=a*a;后,a的值是( C )。 A. 12 B. 144 C. 156 D. 2887. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,那么以下能正确表示代数式的表达式是( D )。8. 以下说法中正确的选项是B。 A. C+程序总是从第一个定义的函数开始执行 B. C+程序总是从main函数开始执行 C. C+函数必须有返回值,否那么不能使用函数 D. C+程序中有调用关系的所有函数必须放在同一个程序文件中9. 下面有关构造函数的描述中,正确的选项是B 。 A. 构造函数可以带有返回值 B. 构造函数的名字与类名完全相同 C. 构造函数必须带有参数 D. 构造函数必须定义,不能缺省10.10.在声明类时,下面的说法正确的选项是 。A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是registerC. private,public,protected可以按任意顺序出现D. 没有用private,public,protected定义的数据成员是公有成员11.在下面有关析构函数特征的描述中,正确的选项是 A 。 A. 一个类可以有多个析构函数 B. 析构函数与类名完全相同 C. 析构函数不能指定返回类型 D. 析构函数可以有一个或多个参数12.构造函数是在B 时被执行的。 A. 程序编译 B. 创立对象 C. 创立类 D. 程序装入内存13. 下面有关静态成员函数的描述中,正确的选项是 B A. 在静态成员函数中可以使用this指针 B. 在建立对象前,就可以为静态数据成员赋值 C. 静态成员函数在类外定义是,要用static前缀 D. 静态成员函数只能在类外定义14.下面有关友员函数的描述中,真确的说法是A A. 友员函数是独立于当前类的外部函数 B. 一个友员函数不可以同时定义为两个类的友员函数 C. 友员函数必须在类的外部进行定义 D. 在类的外部定义友员函数时必须加上friend关键字15.友员的作用之一是 A A. 提高程序的运行效率 B. 加强类的封装 C. 实现数据的隐蔽性 D. 增加成员函数的种类16.使用派生类的主要原因是 A A. 提高代码的可重用性 B. 提高程序的运行效率 C. 加强类的封装性 D. 实现数据的隐藏17.在C+中继承方式有几中 C A. 1 B. 2 C. 3 D. 418.假设已经定义好了类student,现在要定义类derived,它是从student私有派生的,那么定义类derived的正确写法是 D A. class derived :student private /. B. class derived :student public /. C. class derived :public student /. D. class derived :private student /.19.派生类的对象对它的基类成员中C是可以访问的。 A.公有继承的公有成员; B.公有继承的私有成员; C.公有继承的保护成员; D.私有继承的公有成员。20. 类中定义的成员默认为A 访问属性。 A. public B. private C. protected D. friend21.以下存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用 A 适宜。 A. 内联函数; B. 重载函数; C. 递归调用; D. 嵌套调用。22.C+对C语言作了很多改良,以下描述中D使得C语言发生了质变,从面向过程变成了面向对象。 A. 增加了一些新的运算符; B. 允许函数重载,并允许设置缺省参数; C. 规定函数说明必须用原型; D. 引进了类和对象的概念;23.按照标识符的要求,A符号不能组成标识符。 A. 连接符 B. 下划线 D. 数字字符24.以下变量名中, A 是合法的。 A CHINA B byte-size C double D A+a25.以下各种函数中, C不是类的成员函数。 A 构造函数 B 析构函数 C 友元函数 D 拷贝构造函数26.以下 A 是正确的语句。 A ; B a=17 C x+y D cout<<"n"27.不能作为函数重载判断的依据的是(B ) A.返回类型 B. const C.参数个数 D. 参数类型28.通常,拷贝构造函数的参数是(C ) A.某个对象名 B.某个对象的成员名 29.下面对静态数据成员的描述中,正确的选项是(C ) A 类的不同对象有不同的静态数据成员值 B 类的每个对象都有自己的静态数据成员 C静态数据成员是类的所有对象共享的数据 D 静态数据成员不能通过类的对象调用30.假定AB为一个类,那么执行AB x;语句时将自动调用该类的( B) 31.C+程序从上机到得到结果的几个操作步骤依次是( B )。 A. 编译、编辑、连接、运行 B. 编辑、编译、连接、运行 C. 编译、运行、编辑、连接 D. 编辑、运行、编辑、连接32.假定一条定义语句为“int a10, x, *p=a;,假设要把数组a中下标为3的元素值赋给x,那么不正确的语句为A 。 A. x=p3; B. x=*(a+3); C. x=a3; D. x=*p+3;33.关于封装,以下说法中不正确的选项是D 。 A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体 B. 通过封装,一个对象的实现细节被尽可能地隐藏起来不可见 C. 通过封装,每个对象都成为相对独立的实体 D. 通过封装,对象的属性都是不可见的34.预处理命令在程序中都是以( B )符号开头的。 A. * B. # C. & D. 35.存储以下数据,占用存储字节最少的是 B 。 A. 0 B. 0 C. “036.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车37.假定变量m定义为“int m=7;,那么定义变量p的正确语句为 B 。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m;38.下面的哪个保存字不能作为函数的返回类型? C 。 A. void B. int C. new D. long39.采用重载函数的目的是 B 。 A.实现共享 B.减少空间 C.提高速度 D.使用方便,提高可读性AB为一个类,那么( C )为该类的拷贝构造函数的原型说明。 A. AB(AB x); B. AB(int x); C. AB(AB& x); D. void AB(AB& x);41、 C+对C语言作了很多改良,以下描述中D使得C语言发生了质变,从面向过程变成了面向对象。A、增加了一些新的运算符; B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型; D、引进了类和对象的概念;42、 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(A)。43、 关于new运算符的以下描述中,C是错误的。A、 它可以用来动态创立对象和对象数组;B、使用它创立的对象或对象数组可以使用运算符delete删除;C、使用它创立对象时要调用构造函数;D、使用它创立对象数组时必须指定初始值;44、 D不是构造函数的特征。A、构造函数的函数名与类名相同; B、构造函数可以重载;C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。45、 假定一个类的构造函数为B(int x,int y)a=x-;b=a*y-;,那么执行B x(3,5); 语句后,x.a和x.b的值分别为(C ) A、 3和5 B、 5和3 C、 3和15 D、20和546、 关于成员函数特征的以下描述中,A是错误的。A、成员函数一定是内联函数; B、成员函数可以重载;C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;47、 在公有继承的情况下,基类成员在派生类中的访问权限B。 A、受限制 B、保持不变 C、受保护 D、不受保护48、 友元的作用是A。A、提高程序的运用效率; B、加强类的封装性;C、实现数据的隐藏性; D、增加成员函数的种类;49、 在C+中,关于以下设置缺省参数值的描述中,B是正确的。A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;50、关于delete运算符的以下描述中,C是错误的。A、它必须用于new返回的指针;B、使用它删除对象时要调用析构函数;C、对一个指针可以使用屡次该运算符;D、指针名前只有一对方括号符号,不管所删除数组的维数。51、const int *p说明不能修改C。A、p指针; B、p指针指向的变量;C、p指针指向的数据类型; D、上述A、B、C三者;52、当需要翻开A盘上的以xxk.dat文件用于输入时,那么定义文件流对象的语句为 (B )。A、fstream fin(“,1) B、ifstream fin(“,ios:nocreate)C、ofstream fin(“) D、ifstream fin(“,ios:app)53、派生类的对象对它的基类成员中A是可以访问的。A、公有继承的公有成员; B、公有继承的私有成员;C、公有继承的保护成员; D、私有继承的公有成员;54、假定一个字符串的长度为n,那么定义存储该字符串的字符数组的长度至少为C。A、n-1 B、n C、 n+1 D、n+255、 在int a=3; *p=&a;中,*p的值是D。A、变量a的地址值 B、无意义 C、变量p的地址值 D、 356、 以下常量中, D不是字符常量。A、005 B、n C、 c D、“a57、在int a=3,*p=&a;中,*p的值是D。A变量a的地址值 B无意义 C变量p的地址值 D 358、以下4个选项中,不能看作一条语句的是B 。A) if(b=0) m=1;n=2; B) a=0,b=0,c=0; C) if(a>0); D) ;59、D不是构造函数的特征。A构造函数的函数名与类名相同 B构造函数可以重载C构造函数可以设置缺省参数 D构造函数必须指定类型说明60、以下程序段中与语句k=a>b? 1:0;功能等价的是D 。A if(a>b) k=1; B if(a>b) k=0Cif(a>b) k=1; Dif(a<b) k=0;else k=0; else k=1;61、以下常量中, D不是字符常量。A005 Bn C) c D"a"62、表示“x大于1而小于10的逻辑表达式是B 。A1<x<10 Bx>1&&x<10 C) !(x<=1|x>=10) Dx>1|x<1063、关于成员函数特征的以下描述中,A是错误的。A成员函数一定是内联函数 B成员函数可以重载C成员函数可以设置缺省参数值 D成员函数可以是静态的64、有以下程序#include <iostream.h>void main( ) int i,s=0;for(i=1;i<10;i+=2) s+=i;cout<<s;程序执行后的输出结果是C 。A 自然数19的累加和 B 自然数110的累加和C 自然数19中的奇数之和 D 自然数110中的偶数之和65、设有定义:int n=0,*p=&n,*q=&p;那么以下选项中,正确的赋值语句是D。A p=1; B *q=2; C q=p; D *p=5;66、 A能正确输出结果:C+。 A char s="C+"cout<<s<<endl; Bchar s3="C+"cout<<s<<endl; Cchar s3='C','+','+','0'cout<<s<<endl; Dchar s3='C','+','+'cout<<s<<endl;67、有以下程序段int a10=1,2,3,4,5,6,7,8,9,10,*p=a,b;b=p5;b中的值是 B。A5 B6 C 8 D 968、有以下程序#include <iostream.h>void main( ) char *p10="abc","aabdfg","dcdbe","abbd","cd"cout<<p3<<endl;执行后输出结果是 BAdcdbe B abbd C abc D abb69、以下静态数据成员的特性中,C是错误的。A 说明静态数据成员时前边要加修饰符staticB 静态数据成员要在类体外进行初始化C 静态数据成员不是所有对象所共用的D引用静态数据成员时,要在其名称前加<类名>和作用域运算符70、有以下语句struct S int g; char h; T;那么下面表达中不正确的选项是C 。AS是结构体名 B该结构体包含2个成员CS是struct类型的变量 DT是struct S类型的变量71、派生类的对象对它的基类成员中A是可以访问的。A公有继承的公有成员B公有继承的私有成员C公有继承的保护成员D私有继承的公有成员72、实现运行时的多态性用 。DA、重载函数 B、构造函数 C、析构函数 D、虚函数73以下变量名中, A 是合法的。 A. CHINA B. byte-size C. double D. A+a74. 在int b3=1,3,2,4,5,6,0;b22的值是D 。 A. 0 B. 2 C. 5 D. 675. 以下各运算符中,B优先级最高。A. +双目 B. *单目 C. <= D. *=76. 以下for循环的次数为 B 。for(int i(0),x=0;!x&&i<=5;i+)A. 5 B. 6 C . 1 D. 无限77. 下述关于break语句的描述中, C 是正确的。A.break语句可用于循环体内,它将退出该重循环。B.break语句可用于开关语句中,它将退出开关语句。C.break语句可用于if体内,它将退出if语句。D.break语句在一个循环体内可以出现屡次。78. 在一个被调用函数中,关于return语句使用的描述,D 是错误的。A.被调用函数中可以不用 return语句。B.被调用函数中可以使用多个return语句。C.被调用函数中,如果有返回值,就一定要有return语句。D.被调用函数中,一个return语句可返回多个值给调用函数。79. 在C+中,关于以下设置参数默认的描述中, C 是正确的。A.不允许设置参数的默认值。B.设置参数默认值只能在定义函数时设置。C.设置参数默认值时,应该是先设置右边的再设置左边的。D.设置参数默认值时,应该全部参数都设置。80. 以下存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用 A 适宜。A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用 81. 以下的各类函数中, C 不是类的成员函数。A. 构造函数 B. 析构函数 C . 友元函数 D. 拷贝初始化构造函数 82. D不是构造函数的特征A.构造函数的函数名与类名相同 B.构造函数可以重载 C.构造函数可以设置缺省参数 D.构造函数必须指定类型说明 83.f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用 C是正确的。A.p=f1 B. p=A:f1 C. p=A:f1() D. p=f1() 84.以下定义中,A 是定义指向数组的指针p。A.int *p5 B.int (*p)5 C.(int *)p5 D.int *p 85循环while(int i=0) i-;执行次数是 A 。A. 0 B. 1 C . 5 D . 无限86.设int x;,那么经过 C 后,语句*px=0;可将x值置为0。A. int * px; B . int const * px=&x; C. int * const px=&x; D. const int * px=&x;87.设void f1(int * m,long & n);int a;long b;那么以下调用合法的是 B 。A. f1(a,b); B. f1(&a,b); C. f1(a,&b); D. f1(&a,&b)88. 关于对象概念的描述中, A 是错误的。A. 对象就是C语言中的结构变量;B. 对象代表着正在创立的系统中的一个实体;C. 对象是一个状态和操作或方法的封装体;D. 对象之间的信息传递是通过消息进行的;89. 在以下double型常量表示中,A 是错误的。A. E15; B. .35; C. 3E5; D. 3E-590. 以下给字符数组进行初始化中,A 是正确的。A. char s1 ="12345abcd" B. char s23="xyz" C. char s33=a,x,y; D. char s423="xyz","mnp"91. 对于int *pa5;的描述, D 是正确的。A.pa是一个指向数组的指针,所指向的数组是5个int型元素;B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;C.pa5表示某个数组的第5个元素的值;D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针;92. 以下各运算符中, A 优先级最低。A?: B. | C. | D. !=93. 以下for循环的循环体执行次数为 D 。for(int i(0),j(10);i=j=4;i+,j- -) A. 0; B. 1; C. 4; D. 无限;94. 下述关于开关语句的描述中, A 是正确的。A.开关语句中default子句可以没有,也可以有一个;B.开关语句中每个语句序列中必须有break语句;C.开关语句中default子句只能放在最后;D.开关语句中case子句后面的表达式可以是整形表达式。95. 以下存储类标识符中, C 的可见性与存在性不一值。A. 外部类; B. 自动类; C. 内部静态类; D. 存放器类。96. 下述静态数据成员的特征中, D是错误的。A.说明静态数据成员时前边要加修饰符static;B.静态数据成员要在类体外进行初始化;C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;D.静态数据成员不是所有对象所共用的。97. A是析构函数的特征。A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。;98.:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5, C 是正确的。A. A1.p=5; B. A1->p=5;C. A.*p=5; D. *A1.p=5;99.关于new运算符的以下描述中,( D )是错的。A.它可以用来动态创立对象和对象数组;B.使用它创立的对象或对象数组可以使用运算符delete删除;C.使用它创立对象时要调用构造函数;D.使用它创立对象数组时必须指定初始值。 100.派生类的构造函数的成员初始化列中,不能包含C 。A.基类的构造函数;B.派生类中子对象的初始化;C.基类的子对象初始化;D.派生类中一般数据成员的初始化101.派生类的对象对它的基类成员中 A是可以访问的。A.公有继承的公有成员;B.公有继承的私有成员;C.公有继承的保护成员;D.私有继承的公有成员。102C+类体系中,不能被派生类继承的有 A。103下面标识符中正确的选项是A 。A_abc B3ab C int D+ab104以下哪项 D 不是面向对象程序设计的主要特征?105假设有以下定义,那么说法错误的选项是( D)。 int a=100,*p=&a ;A声明变量p,其中*表示p是一个指针变量B变量p经初始化,获得变量a的地址C变量p只可以指向一个整形变量D变量p的值为100106对数组名作函数的参数,下面描述正确的选项是B。A数组名作函数的参数,调用时将实参数组复制给形参数组。B数组名作函数的参数,主调函数和被调函数共用一段存储单元。C数组名作参数时,形参定义的数组长度不能省略。D数组名作参数,不能改变主调函数中的数据。107关于静态成员的描述中, B 是错误的。A 静态成员可分为静态数据成员和静态成员函数。B 静态数据成员定义后必须在类体内进行初始化。C 静态数据成员初始化不使用其构造函数。D 静态数据成员函数中不能直接引用非静态成员。108以下关于构造函数的描述中,错误的选项是 D 。 A构造函数可以设置默认的参数 B构造函数在定义类对象的自动执行 C构造函数可以是内联函数 D构造函数不可以重载109假设OneClass为一个类,那么该类的拷贝初始化构造函数的声明语句为 C 。A. OneClass(OneClass p); B. OneClass& (OneClass p);C. OneClass(OneClass & p); D. OneClass (OneClass *p);110如果类A被说明成类B的友元,那么 D 。A.类A的成员即类B的成员。 B.类B的成员即类A的成员。C.类A的成员函数不得访问类B的成员 。 D.类B不一定是类A的友元。111、关于对象和类的关系,说法正确的选项是 C 。A) 同属于一类的对象,具有相同的数据成员和成员函数。B) 对象是具体,是类的对象,同其他变量一样,先定义后使用。C) 同一类的不同对象,其具有的操作可不同,具体的操作也不同。D) 不同类的对象,可有相同的操作。112、以下关于C+函数的说明中正确的选项是 D 。 A) 内联函数就是定义在另一函数体内部的函数。 B) 函数体的最后一条语句必须是RETURN语句。 C) 标准C+要求在调用一个函数之前,必须先声明其原型。 D) 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。113、以下关于虚函数的说明中,正确的选项是 B 。 A) 从虚基类继承的函数都是虚函数。 B) 虚函数不得是静态成员函数。 C) 只能通过指针和引用调用虚函数。 D) 抽象类中的成员函数都是虚函数。114、以下符号中可以用作C+标识符的是 A 。 A) _radius B) foobar C) else D) 3room115、以下语句中错误的选项是 B 。 A) const int buffer=256; B) const int int temp; C) const double *point; D) const double *rt=new double(5.5)116、以下关于实参和形参说法错误的选项是 D 。 A实参可以是变量、常量、或表达式。B实参与形参的类型必须一致,否那么会发生“类型不匹配的错误。C实参对形参的数据传递是单向传递,调用结束后,实参单元被释放。D形参必须是变量 。 117、关于内联函数说法错误的选项是 C 。A不是任何一个函数都可定义成内联函数。B内联函数的函数体内不能含有复杂的结构控制语句。C递归函数可以被用来作为内联函数。D内联函数一般适合于只有15行语句的小函数。118、关于保护继承的说法正确的选项是 D 。A基类的公有成员、私有成员可被子类继承下来,而且性质不变。 B基类的公有成员、私有成员可被子类继承下来,而且性质改变为保护成员。 C基类的公有成员、私有成员可被子类继承下来,而且性质均改变为私有成员。 D基类的公有成员、私有成员可被子类继承下来,性质不变,私有成员不被继承。119、关于函数的返回值说法正确的选项是 A 。A)由return语句返回时,只带回一值,其类型在函数定义时确定。B)其类型由调用表达式决定。 C)函数可以没有返回值,这时在函数定义,函数的类型说明就没必要了。D)函数调用就要有返回值,否那么调用就没意义了。120、关于结构化程序设计方法说法错误的选项是 D 。 A在数据处理过程中,采用的是自顶向下、分而治之的方法。B将整个程序按功能划分为几个可独立编程的子过程模块。C以“对象或“数据为中心。D数据和处理数据的过程代码是别离的、相互独立的实体。121、运算符重载是对已有的运算符赋予多重含义,因此 C 。A可以对根本类型如int类型的数据,重新定义“+运算符的含义。B可以改变一个已有运算符的优先级和操作数个数。C只能重载C+中已经有的运算符,不能定义新运算符。DC+中已经有的所有运算符都可以重载。122、关于C+程序说法不正确的选项是 D 。 A) C+程序由函数构成,但只有一个main()函数 。 B) C+程序中main()函数可以在程序的任何位置 。 C) C+程序由main()函数开始执行,由main()结束执行。 D) main()都是没有参数的。123、下面有关重载函数的说法中正确的选项是 C 。 A)重载函数必须具有不同的返回值类型。B)重载函数形参个数必须不同。 C)重载函数必须有不同的形参列表。D)重载函数名可以不同。二、填空: 1. C+语言的头文件与源程序文件扩展名分别是.h 和 .cpp 。 2. 在C+程序中使用根本输入与输出流时需要包含的头文件名是 iostr eam 。 3. 在C+语言中,惟一的一个三目运算运算符是 ?: 。 4. C+中当一个函数无返回值时,那么函数的类型是void 。5. 一个类中可以有多个构造函数,只能有 一 个析构函数。6.一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为 私有 权限, 而把成员函数(方法)定义为公有 权限.7.在定义类的对象时,C+程序将自动调用该对象的 构造 函数初始化对象自身.在撤销类的对象时,C+程序将自动调用该对象的 析构 函数.8.类继承中,缺省的继承方式是 私有继承 .9在C+语言中,用转义字符序列 'n' 或操纵符 endl 表示输出一个换行符。10表达式a=al表示成增量表达式为 +a 。11当不需要函数返回任何值时,那么应把该函数类型定义为 void 。12用于输出表达式值的标准输出流对象是 cout。,用于从键盘上为变量输人值的标准输人流对象是cin 。13、变量分为全局和局部两种,全局变量默认初始化为0 。变量没有赋初值时,其值是不确定的。14、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 AB::bb 。15、类的成员分为数据成员和成员函数。16、一个类和对象的关系,正如根本数据类型与该类型的变量一样,如int x;。17、对一个类中的数据成员的初始化可以通过构造函数中的赋值实现,也可以通过构造函数中的初始化列表实现。18、类有两种用法:一种是定义对象,即生成类的对象;另一种是通过派生