1、第 1 页 共 43 页一、单选题:1. 能作为 C+程序的基本单位是( )。A. 字符 B. 语句 C. 函数 D. 源程序文件2. 程序中主函数的名字为( ) 。A. main B. MAIN C. Main D. 任意标识符3. 关于 C+与 C 语言的关系的描述中, ( )是错误的。A. C 语言是 C+的一个子集; B. C 语言与 C+是兼容的;C. C+对 C 语言进行了一些改进; D. C+和 C 语言都是面向对象的4. 可用作 C+语言用户标识符的一组标识符是( )。A. void define +WORD B. a3_b3 _123 YNC. for -abc Case D
2、. 2a DO sizeof5. 存储以下数据,占用存储字节最多的是( ) 。A. 0 B. 0 C. “0” D. 0.06. 设 int a=12;则执行完语句 a+=a*a;后,a 的值是( )。A. 12 B. 144 C. 156 D. 2887. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于 1,则下列能正确表示代数式 的表达式是( )。abc1A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c8. 以下说法中正确的是( ) 。 A. C+程序总是从第一个定义的函数开始执行B. C+程序总是从 main 函数
3、开始执行C. C+函数必须有返回值,否则不能使用函数D. C+程序中有调用关系的所有函数必须放在同一个程序文件中9. 下面有关构造函数的描述中,正确的是( ) 。A. 构造函数可以带有返回值 B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数 D. 构造函数必须定义,不能缺省10.在声明类时,下面的说法正确的是( ) 。A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是 registerC. private,public,protected 可以按任意顺序出现D. 没有用 private,public,protected 定义的数据成员是公有成员11.在下面有关析构
4、函数特征的描述中,正确的是( ) 。A. 一个类可以有多个析构函数 B. 析构函数与类名完全相同C. 析构函数不能指定返回类型 D. 析构函数可以有一个或多个参数12.构造函数是在( )时被执行的。A. 程序编译 B. 创建对象 C. 创建类 D. 程序装入内存13. 下面有关静态成员函数的描述中,正确的是( )A. 在静态成员函数中可以使用 this 指针B. 在建立对象前,就可以为静态数据成员赋值C. 静态成员函数在类外定义是,要用 static 前缀D. 静态成员函数只能在类外定义14.下面有关友员函数的描述中,真确的说法是( )A. 友员函数是独立于当前类的外部函数C+程序设计试卷第
5、2 页 共 43 页B. 一个友员函数不可以同时定义为两个类的友员函数C. 友员函数必须在类的外部进行定义D. 在类的外部定义友员函数时必须加上 friend 关键字15.友员的作用之一是( )A. 提高程序的运行效率 B. 加强类的封装C. 实现数据的隐蔽性 D. 增加成员函数的种类16.使用派生类的主要原因是( )A. 提高代码的可重用性 B. 提高程序的运行效率C. 加强类的封装性 D. 实现数据的隐藏17.在 C+中继承方式有几中( )A. 1 B. 2 C. 3 D. 418.假设已经定义好了类 student,现在要定义类 derived,它是从 student 私有派生的,则定义
6、类 derived 的正确写法是( )A. class derived :student private /.B. class derived :student public /.C. class derived :public student /.D. class derived :private student /.19.派生类的对象对它的基类成员中( )是可以访问的。A.公有继承的公有成员; B.公有继承的私有成员;C.公有继承的保护成员; D.私有继承的公有成员。20. 类中定义的成员默认为( )访问属性。A. public B. private C. protected D. fri
7、end21.下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )合适。A. 内联函数; B. 重载函数; C. 递归调用; D. 嵌套调用。22.C+对 C 语言作了很多改进,下列描述中( )使得 C 语言发生了质变,从面向过程变成了面向对象。A. 增加了一些新的运算符; B. 允许函数重载,并允许设置缺省参数;C. 规定函数说明必须用原型; D. 引进了类和对象的概念;23.按照标识符的要求, ( )符号不能组成标识符。A. 连接符 B. 下划线 C.大小写字母 D. 数字字符24.下列变量名中, ( )是合法的。A CHINA B byte-size
8、C double D A+a25.下列各种函数中, ( )不是类的成员函数。A 构造函数 B 析构函数 C 友元函数 D 拷贝构造函数26.下列( )是正确的语句。A ; B a=17 C x+y D cout0); D) ;C+程序设计试卷第 5 页 共 43 页59、 ( )不是构造函数的特征。A)构造函数的函数名与类名相同 B)构造函数可以重载C)构造函数可以设置缺省参数 D)构造函数必须指定类型说明60、以下程序段中与语句 k=ab? 1:0;功能等价的是( ) 。A) if(ab) k=1; B) if(ab) k=0C)if(ab) k=1; D)if(a1for(i=1;ivoi
9、d main( ) char *p10=“abc“,“aabdfg“,“dcdbe“,“abbd“,“cd“;cout和作用域运算符70、有以下语句struct S int g; char h; T;则下面叙述中不正确的是( ) 。A)S 是结构体名 B)该结构体包含 2 个成员C)S 是 struct 类型的变量 D)T 是 struct S 类型的变量71、派生类的对象对它的基类成员中( )是可以访问的。A)公有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)私有继承的公有成员72、实现运行时的多态性用 。A、重载函数 B、构造函数 C、析构函数 D、虚函数73下列变量名中,
10、 ( )是合法的。A. CHINA B. byte-size C. double D. A+a74. 在 int b3=1,3,2,4,5,6,0;b22的值是( ) 。A. 0 B. 2 C. 5 D. 675. 下列各运算符中, ()优先级最高。A. +(双目) B. *(单目) C. 和作用域运算符;D. 静态数据成员不是所有对象所共用的。97. ( )是析构函数的特征。A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。;98. 已知:p 是一个指向类 A 数据成员 m 的指针,A1 是类 A 的一个对
11、象。如果要给 m 赋值为 5, ( )是正确的。A. A1.p=5; B. A1-p=5;C. A.*p=5; D. *A1.p=5;99. 关于 new 运算符的下列描述中,( )是错的。A. 它可以用来动态创建对象和对象数组;B. 使用它创建的对象或对象数组可以使用运算符 delete 删除;C. 使用它创建对象时要调用构造函数;D. 使用它创建对象数组时必须指定初始值。 100. 派生类的构造函数的成员初始化列中,不能包含( ) 。A. 基类的构造函数;B. 派生类中子对象的初始化;C. 基类的子对象初始化;D. 派生类中一般数据成员的初始化101. 派生类的对象对它的基类成员中( )是
12、可以访问的。A. 公有继承的公有成员;B. 公有继承的私有成员;C. 公有继承的保护成员;D. 私有继承的公有成员。102C+类体系中,不能被派生类继承的有( ) 。A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数103下面标识符中正确的是( ) 。A_abc B3ab C int D+ab104下列哪项( )不是面向对象程序设计的主要特征?a.封装 b.继承 c.多态 d.结构105已知 i=5,j=0,下列各式中运算结果为 j=6 的表达式是( ) 。Aj=i+(+j) Bj=j+i+ Cj=+i+j Dj=j+i106若整型变量 a、b、c、d 中的值依次为:1、4、3、2。
13、则条件表达式 ab?a:cd?c:d的值A1 B2 C3 D4107以下不正确的是( ) 。A语句 for(i=0;i+)表示无限循环 Bfor(;)表示无限循环Cfor()也表示无限循环 Dwhile(1)表示无限循环108有如下程序:int x=3;C+程序设计试卷第 9 页 共 43 页doX-=2;coutx; while(!(-x);执行这个程序的输出结果是( ) 。A 1 B30 C1-2 D死循环109若有以下定义,则说法错误的是( )。int a=100,*p=A声明变量 p,其中*表示 p 是一个指针变量B变量 p 经初始化,获得变量 a 的地址C变量 p 只可以指向一个整形
14、变量D变量 p 的值为 100110下面关于数组的初始化正确的是( ) 。Achar stra, b,cBchar str2a,b,cCchar str23a,b,e ,d,e , fDchar stra,b,c111若已定义:int a=0,1,2,3,4,5,6,7,8,9,*P=a,i;其中 0i9,则对 a 数组元素不正确的引用是( ) 。Aap-a B*(,若 pa= Bx*(a+l); Cx*(pa+1); Dxa1;113对数组名作函数的参数,下面描述正确的是(B) 。A数组名作函数的参数,调用时将实参数组复制给形参数组。B数组名作函数的参数,主调函数和被调函数共用一段存储单元。
15、C数组名作参数时,形参定义的数组长度不能省略。D数组名作参数,不能改变主调函数中的数据。114关于静态成员的描述中, ( )是错误的。A 静态成员可分为静态数据成员和静态成员函数。B 静态数据成员定义后必须在类体内进行初始化。C 静态数据成员初始化不使用其构造函数。D 静态数据成员函数中不能直接引用非静态成员。115下列关于构造函数的描述中,错误的是( ) 。 A构造函数可以设置默认的参数 B构造函数在定义类对象的自动执行 C构造函数可以是内联函数 D构造函数不可以重载116假设 OneClass 为一个类,则该类的拷贝初始化构造函数的声明语句为( ) 。A. OneClass(OneClas
16、s p); B. OneClassC. OneClass(OneClass D. OneClass (OneClass *p);117如果类 A 被说明成类 B 的友元,则( ) 。A.类 A 的成员即类 B 的成员。 B.类 B 的成员即类 A 的成员。C.类 A 的成员函数不得访问类 B 的成员 。 C+程序设计试卷第 10 页 共 43 页D.类 B 不一定是类 A 的友元。118、关于对象和类的关系,说法正确的是( ) 。A) 同属于一类的对象,具有相同的数据成员和成员函数。B) 对象是具体,是类的对象,同其他变量一样,先定义后使用。C) 同一类的不同对象,其具有的操作可不同,具体的操
17、作也不同。D) 不同类的对象,可有相同的操作。119、双精度浮点型的字节数是( ) 。A)4 B)1 C)0 D)8120、下列关于 C+函数的说明中正确的是( ) 。A) 内联函数就是定义在另一函数体内部的函数。B) 函数体的最后一条语句必须是 RETURN 语句。C) 标准 C+要求在调用一个函数之前,必须先声明其原型。D) 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。121、下列关于虚函数的说明中,正确的是( ) 。A) 从虚基类继承的函数都是虚函数。B) 虚函数不得是静态成员函数。C) 只能通过指针和引用调用虚函数。D) 抽象类中的成员函数都是虚函数。122、下列符号
18、中可以用作 C+标识符的是( ) 。A) _radius B) foobar C) else D) 3room123、结构化程序设计所规定的三种基本控制结构是 ( ) 。 A)输入、处理、输出 B)树形、网形、环形 C)顺序、选择、循环 D)主程序、子程序、函数 124、下列语句中错误的是( ) 。A) const int buffer=256; B) const int int temp;C) const double *point; D) const double *rt=new double(5.5)125、下列关于实参和形参说法错误的是( ) 。A)实参可以是变量、常量、或表达式。B)
19、实参与形参的类型必须一致,否则会发生“类型不匹配”的错误。C)实参对形参的数据传递是单向传递,调用结束后,实参单元被释放。D)形参必须是变量 。 126、关于内联函数说法错误的是( ) 。A)不是任何一个函数都可定义成内联函数。B)内联函数的函数体内不能含有复杂的结构控制语句。C)递归函数可以被用来作为内联函数。D)内联函数一般适合于只有 15 行语句的小函数。127、关于保护继承的说法正确的是( ) 。A)基类的公有成员、私有成员可被子类继承下来,而且性质不变。B)基类的公有成员、私有成员可被子类继承下来,而且性质改变为保护成员。C)基类的公有成员、私有成员可被子类继承下来,而且性质均改变为私有成员。D)基类的公有成员、私有成员可被子类继承下来,性质不变,私有成员不被继承。128、关于函数的返回值说法正确的是( ) 。A)由 return 语句返回时,只带回一值,其类型在函数定义时确定。B)其类型由调用表达式决定。