|
《面向对象程序设计》考前练兵
1.[单选题] ( )是给变量去一个别名,它引入了变量的同义词。
更多学习资料www.openhelp100.com
A.指针
B.引用
C.枚举
D.结构
答:——B——
2.[单选题] 下列选项中不是面向对象程序设计语言所特有的是( )
A.数据封装
B.继承
C.多态性
D.模板
答:——D——
3.[单选题] 类成员的访问权限中,(??????????)只能被本类成员及友元函数访问。
A.share
B.public
C.private
D.protected
答:——C——
4.[单选题] 关于构造函数,下列说法不正确的是( )。
A.构造函数名和类名相同
B.构造函数在类创建是自动运行
C.构造函数没有任何返回类型
D.构造函数有且只有一个
答:————
5.[单选题] 下列关于函数重载的说法,正确的是( )。
A.重载函数必须具有不同的返回类型
B.重载函数必须有不同的形参个数
C.重载函数必须具有不同的形参列表
D.重载函数的函数名可以不同
答:————
6.[单选题] 字符串"AbcdEf "在内存中占用的字节数是( )。
A.6
B.7
C.8
D.9
答:————
7.[单选题] 如下关于类Csample的说明,不正确的是( )。
A.class Csample{ int a=23
B.CSample()
C.public: CSample(int a)
D.~CSample()
答:————
8.[单选题] 下列说法不正确的是( )。
A.在不同函数中可以使用相同的变量名
B.函数的形参是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数的复合语句中定义的变量在本函数范围内有效
答:————
9.[单选题] 对于类中定义的static数据成员,下列说法正确的是( )。
A.该类的每个对象中都有一个静态成员
B.对象创建时产生
C.类外初始化
D.既可在类外初始化,也可在类内初始化
答:————
10.[单选题] 若定义了函数double *func(),则函数func的返回值为( )。
A.实数
B.实数的地址
C.指向函数的指针
D.函数的地址
答:————
11.[单选题] C++语言是由早期的C语言逐渐演化发展而来的,与C语言相比,它在求解方式上的最大改进是(??????????)
A.面向过程
B.面向对象
C.安全性
D.复用性
答:————
12.[单选题] 一个类( )构造函数。
A.只能有一个
B.可以有多个
C.只能有公有的
D.只能有缺省的
答:————
13.[单选题] 以下说法正确的是( )。
A.C/C++程序总是从第一个函数开始执行
B.C/C++程序中,要调用的函数必须在main()中定义
C.C/C++程序总是从main()函数开始执行
D.C/C++语言中main()函数必须放在最开始的部分
答:————
14.[单选题] 关于重载运算符的描述,错误的是( )。
A.运算符重载不能改变运算参数的个数
B.运算符重载不能改变运算符功能
C.运算符重载不能改变运算符的结合性
D.运算符重载不能改变运算符的优先级
答:————
15.[单选题] 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的( )。
A.可维护性
B.可复用性
C.兼容性
D.正确性
答:————
16.[单选题] 已知a为类A的对象实例,下列定义哪种是正确的,并且可以作为函数void f(A *const pp)的实参( )。
A.A *p=new A
B.A *p=a
C.const A *p=new A
D.const A* p=a
答:————
17.[单选题] 一个类中可以对一个操作符进行( )重载。
A.1种
B.2种
C.3种以下
D.多种
答:————
18.[单选题] 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为( )。
A.2
B.4
C.6
D.8
答:————
19.[单选题] 关于封装,下列说法中不正确的是( )。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
答:————
20.[单选题] 文件包含命令中被包含的文件的扩展名( )。
A.必须是.h
B.不能是.h
C.可以是.h或.cpp
D.必须是.cpp
答:————
21.[单选题] 由C++源程序文件编译而成的目标文件的默认扩展名为( )。
A.cpp
B.exe
C.obj
D.lik
答:————
22.[单选题] C++程序从上机到得到结果的几个操作步骤依次是( )。
A.编译、编辑、连接、运行
B.编辑、编译、连接、运行
C.编译、运行、编辑、连接
D.编辑、运行、编辑、连接
答:————
23.[单选题] 类成员的访问权限中,(??????????)只能被被类成员函数、子类函数及友元访问。
A.share
B.public
C.private
D.protected
答:————
24.[单选题] 存储以下数据,占用存储字节最多的是( ).
A.0
B.‘0’
C.“0”
D.0.0
答:————
25.[单选题] 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为( )。
A.1
B.0
C.与x值相同
D.与x值相反
答:————
26.[单选题] 字符串"AbcdEf "的长度是( )。
A.6
B.7
C.8
D.9
答:————
27.[单选题] 下列的符号常量定义中,错误的定义是( )。
A.const M=10
B.const int M=20
C.const char ch
D.const bool mark=true
答:————
28.[单选题] 下列说法不正确的是( )。
A.在一个函数中,可以有多条return语句
B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值
D.不同的函数中可以使用相同名字的变量
答:————
29.[单选题] 关于局部变量,下面说法正确的是( )。
A.定义该变量的程序文件中的函数都可以访问
B.定义该变量的函数中的定义处以下的任何语句都可以访问
C.定义该变量的复合语句中的定义处以下的任何语句都可以访问
D.定义该变量的函数中的定义处以上的任何语句都可以访问
答:————
30.[单选题] 采用重载函数的目的是( )。
A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性
答:————
31.[判断题] 重载流操作符<<和>>时,如果第一个参数类型是ostream和istream,那么这个重载函数既可用于标准输入输出,也可用于文件流。
A.对
B.错
答:————
32.[判断题] 编译#include <a.h>时,C、C++编译器先在自定义目录中查找a.h,然后再在系统标准目录中查找。
A.对
B.错
答:————
33.[判断题] 抽象类不会产生对象,因此不需要有构造函数。
A.对
B.错
答:————
34.[判断题] 若静态成员函数中调用了一个成员函数f(),则f一定不是虚函数。
A.对
B.错
答:————
35.[判断题] 异常必须在产生它的当前函数中捕获,而不能在其外层函数中捕获。
A.对
B.错
答:————
36.[判断题] 在protected继承方式下,派生类对象的指针不能直接转换成基类对象的指针。
A.对
B.错
答:————
37.[判断题] C++是一门以编译方式实现的高级语言。
A.对
B.错
答:————
38.[判断题] 当将一个类S定义为另一个类A的友元时,S可以访问A的任意成员。
A.对
B.错
答:————
39.[判断题] 函数是C++程序的基本模块。
A.对
B.错
答:————
40.[判断题] 用new动态申请的内存空间,必须使用delete释放。
A.对
B.错
答:————
41.[判断题] 基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。
A.对
B.错
答:————
42.[判断题] break语句也可以用于if体内,它可退出if语句。
A.对
B.错
答:————
43.[判断题] 类的静态数据成员需要在定义每个类的对象时进行初始化。
A.对
B.错
答:————
44.[判断题] 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
A.对
B.错
答:————
45.[判断题] 在传值调用中,要求实参和形参的类型完全一致并且个数相等。
A.对
B.错
答:————
46.[判断题] 友元函数说明在类体内,它是一种成员函数。
A.对
B.错
答:————
47.[判断题] 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
A.对
B.错
答:————
48.[判断题] 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。
A.对
B.错
答:————
49.[判断题] 纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容
A.对
B.错
答:————
50.[判断题] 字符串“abcdefg"的长度是7.
A.对
B.错
答:————
51.[判断题] 类B从类A公有继承,则程序段A?a;B?&b=a;会引发编译错误。
A.对
B.错
答:————
52.[判断题] 重载函数必须有不同的参数列表。
A.对
B.错
答:————
53.[判断题] 拷贝构造函数用于用类的一个对象去初始化该类的另一个对象时使用,也可已用于当函数的形参是类的对象,调用函数时,进行形参与实参结合时使用。
A.对
B.错
答:————
54.[判断题] int?i,*p=&i;是正确的C说明。
A.对
B.错
答:————
55.[判断题] 析构函数不能被继承。
A.对
B.错
答:————
56.[判断题] 类中所提供的成员函数可以直接访问私有成员。
A.对
B.错
答:————
57.[判断题] 引用和指针都可作函数参数.
A.对
B.错
答:————
58.[判断题] 一个类只有一个构造函数,?但可以有多个析构函数。
A.对
B.错
答:————
59.[判断题] 对于任意正确定义的类,都可以构造出该类型的对象。
A.对
B.错
答:————
60.[判断题] 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。
A.对
B.错
答:————
61.[填空题] C++源代码文件的默认扩展名是##。
答:————
62.[填空题] C++语言是从##语言的基础上发展起来的。
答:————
63.[填空题] 定义类时,在类头使用关键字##表示类定义的开始。
答:————
64.[填空题] 当参数列表用##表示时,表示该参数列表为空。
答:————
65.[填空题] C++中变量名必须以##开始。
答:————
66.[填空题] 如果一个类中至少有一个纯虚函数,这个类称为##。
答:————
67.[填空题] 假定p为指针变量且指向的值为25,p+1指向的值为42,则*p++值为##。
答:————
68.[填空题] 在int a=3;int *p=&a;中,*p的值是##。
答:————
69.[填空题] 对于结构中定义的成员,其隐含的访问权限是##。
答:————
70.[填空题] 派生类可以访问基类的##。
答:————
71.[填空题] “面向对象”程序设计的三大基本特性是封装性、##?、多态性。
答:————
72.[填空题] 若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面?加上##关键字。
答:————
73.[填空题] 已知有定义“int?x,?a[]={5,7,9},?*pa=a;”,在执行“x=++*pa;”语句后,x的值是##.
答:————
74.[填空题] 要进行文件的输出,除了包含头文件iostream外,还要包含头文件##
答:————
75.[填空题] (接上题)*(pa+1)的值为##。
答:————
76.[填空题] 假定AB为一个类,则类定义体中的“AB(AB&?x);”语句为该类##的原型语句
答:————
77.[填空题] 在字长为32位的机器中,sizeof(float)=##字节
答:————
78.[填空题] 静态成员是局部于类的成员,它提供一种同类对象的##。机制。
答:————
79.[填空题] 对于class(类)定义的成员,其隐含的访问权限是##。
答:————
80.[填空题] 派生类不能访问基类的##。
答:————
81.[填空题] 行尾使用注释的开始标记符为##。
答:————
82.[填空题] “面向对象”程序设计的三大基本特性是封装性、?继承性、##。
答:————
83.[填空题] 在C++中存储字符串”abcdef”至少需要##个字节
答:————
84.[填空题] 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到##的开始位置
答:————
85.[填空题] 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行##次后正常结束
答:————
86.[填空题] 如果一个函数定义使用了##修饰,则该函数不允许被其它文件中的函数调用。
答:————
87.[填空题] 元素类型为double的二维数组a[4][6]共占用##字节的存储空间
答:————
88.[填空题] 如果一个类中至少有一个##,这个类称为抽象类。
答:————
89.[填空题] C++用来抛出异常的关键字是##。
答:————
90.[填空题] 假定一个数据对象为int*类型,则指向该对象的指针类型为##.
答:————
91.[问答题] 定义一个rectangle矩形类,其数据成员为左上角和右下角坐标,能计算矩形面积。
答:————
92.[问答题] 试定义RECT类(长方形)及其派生类CUB (长方体),具体要求如下:
(1) 类RECT的成员如下:
(a) 保护数据成员
? double x,y;分别表示长方形的长和宽。
(b) 公有成员函数
? RECT (double xl,double yl );构造函数,分别用 xl、yl 初始化 x 和 y。
? virtual double area();虚函数,计算长方形的面积,计算公式:面积=长X宽。
? double peri();计第长方形的周长。计算公式:周长=2X长+2X宽。
? virtual int isSquare();虚函数,判断是否为正方形,如是,返回1;否则返回0。
(2) 类CUB为类RECT的公有派生类,其成员如下:
(a) 私有数据成员
? double height;表示长方体的高度。
(b) 公有成员函数
? CUB();构造函数,用h、x、y分别初始化height及其驻类成员x和y。
? double volume();计算长方体的体积。汁算公式:体积=底面积X高,其中底面积通过调用基类成员函数area()汁爲。
? double area(); 计算长方体的表面积。计算公式:表面积=2X底面积+底面周长X高度。底面积和底面周长分别调用基类成员函数area()和peri()计算。
? int isSquare();判断是否为正方体,如是,返回1,否则返回0。在判断过程中,首先调用基类的成 员函数isSquare()判断底面是否为正方形。
(3) 在主函数中,创建一个CUB对象cu和一个RECT指针*re,并使re指向cu。通过cu调用volume(), 计算并输出长方体的体积:通过re调用area()和isSquare(),计算并输出长方体的表面积,并判断 是否为下方体。
答:————
93.[问答题] 建立一个类STR,连接两个字符串后,将结果字符串输出。例如,字符串sl的值为"peaf"
字符串s2的值为"apple",将sl与s2连接后得到字符串"pearapple",存入字符数组s3。具体要求如下:
(1)私有数据成员:
char s1[80],s2[80],分别存放两个原始字符串:
char s3[160]存放结果字符串。
(2)公有成员函数:
STR(char a[], char b[]),构造函数,用字符串参数a和b分别初始化数据成员字符串sl和s2:
void contact(),合并字符串后存入s3:
void show(),输出两个原始字符串和结果字符串。
(3)在主程序中定义两个字符数组char a[80],b[80],任意输入两个字符串,定义一个STR类对象str,
用字符串a和b初始化该对象,然后按上述要求测试该类。可自行输入任意两个字符串做测试数据。
答:————
94.[问答题] 利用虚函数实现多态性来求正方体、球体和圆柱体的表面积和体积。具体要求如下:
从正方体、球体和圆柱体的各种运算中抽象出一个公共基类contamer为抽象类,在其中定义求表面积和体积的纯虚函数(该抽象类本身是没有表面积和体积可言的)。在抽象类中定义一个公共的数据成员radius,此数据可作为球的半径、正方体的边长、圆柱体底面圆半径。
由此抽象类派生出要描述的3个类,即cube、sphere和cylinder,在这3个类中都具有求表面积和体积的重定义版本。
答:————
95.[问答题] 定义一个字符串类strmg,具体要求如下:
(1)私有成员数据:
char*strl,*str2;
char*str;
//str为strl与str2之和,如strl为"db a”str2为“41 ”则str为"db a41 ”:
(2)公有成员函数:
·构造函数:根据给定的两个字符串初始化成员数据strl和str2,由strl和得到str;
·void dele():删除中的空格字符:
·void show():输出所有成员数据
·析构函数。
(3)设计一个完整的程序对该类进行测试。
·以字符串“db”和“41”初始化和str2,
·输出删除空格前的字符串strl、str2和str
·输出删除空格后的字符串strl、str2和str。
答:————
96.[问答题] 定义一个数组类Array,求整型一维组中值为素数的元素的平均值。具体要求如下:
(1)私有成员数据:
int *p,k; //p表示维组,k为数组大小
float *s; //维组中素数元素的平均值
.float*s;
(2)公有成员函数:
Array(int*ptr,int n):根据参数初始化p和k,然后初始化5并为s赋初值:
0
·int fun(intn):判断n是否为素数,若是返回1,否则返回0:
·void sum():求素数元素的平均值:
·void show():输出所有成员数据,数组每行5个元素,其他成员每行一个:
·析构函数。
(3)设计一个完整的程序对该类进行测试。
以数组{5,2,7,4,8,23,65,1,40}说明Array类型对象arr,并对其测试。
答:————
更多学习资料www.openhelp100.com
|
|