面向对象程序设计题库(C )(DOC)
- 格式:doc
- 大小:166.00 KB
- 文档页数:25
第五章面向对象程序设计一、选择题1、面向对象程序设计采用了以为中心的软件构造方法。
A)数据结构B)数据流C)功能分析D)算法2、下面关于属性、方法和事件的叙述中,错误的是______。
A)属性用于描述对象的状态,方法用于表示对象的行为B)基于同一个类产生的两个对象可以分别设置自己的属性值C)事件代码也可以像方法一样被显示调用D)在新建一个表单时,可以添加新的属性、方法和事件3、在下面关于面向对象数据库的叙述中,错误的是______。
A)每个对象在系统中都有唯一的对象标识B)事件作用于对象,对象识别事件并作出相应反应C)一个子类能够继承其所有父类的属性和方法D)一个父类包括其所有子类的属性和方法4、每个对象都可以对一个被称为事件的动作进行识别和响应。
下面对于事件的描述中,_____是错误的。
A)事件是一种预先定义好的特定的动作,由用户或系统激活B)VFP基类的事件集合是由系统预先定义好的,是唯一的C)VFP基类的事件也可以由用户创建D)可以激活事件的用户动作有按键、单击鼠标、移动鼠标等5、_____是面向对象程序设计中程序运行的最基本实体。
A)对象B)类C)方法D)函数6、创建类时首先要定义类的。
A)名称B)属性C)事件D)方法7、有关窗口的操作,是正确的。
A) deactivate window命令挂起的窗口将从内存中清除B) show window命令显示的窗口不一定是活动窗口,但活动窗口一定是显示窗口C) hide window命令将活动窗口在屏幕上隐藏起来,输出仍然面向该窗口D)用release window删除的窗口还可以再重新显示或激活8、有关窗口的叙述,是正确的。
A) ACTIVATE WINDOW <WINDOW name> 命令激活窗口后,@…SAY的坐标是相对屏幕的物理坐标B)当多次使用激活窗口命令时,则最后一个被激活的窗口是当前窗口C)当前窗口是无法改变的D)窗口休眠后第一个激活的窗口变为当前窗口9、以下属于窗口类控件的是。
人工智能学院面向对象程序设计作业Java语言基础年级专业 2019级软件工程专业学号姓名成绩一、选择题1.下列标识符中,正确的是(C)。
A.class B. 123_rr C. _lei D. test&122.下列( D )的选项可以正确表示八进制8。
A.0x8 B. 0x10 C.08 D. 0103. 以下哪个是十进制数17对应的十六进制正确表示?( D )A. 017B. x11C. 0x17D. 0X114.在Java中,不属于整数类型的是( A )。
A.double B. long C. int D. byte5.在Java中,关于标识符的说明,不正确的是(D )。
A.严格区分大小写;B.长度不限;C.不能用关键字和保留字作为标识符;D.可以包含空格6.给出下面代码的输出结果。
( D )public class ByteAdd {public static void main(String args[ ]){byte a=10;byte b=100;byte c;c=a+b;System.out.println(a+"+"+b+"="+c);} }A.输出零B.输出 10+100=110C. 编译时正确,运行时将产生错误;D.编译时将产生错误;二、程序阅读题1. 对于以下程序,运行“java Abs”,将得到什么打印结果?public class Abs{static int a=0x11;static int b=0011;static int c='\u0011';static int d=011;public static void main(String args[]){ System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);}}179179类和对象年级专业 2019级软件工程专业学号姓名成绩一、选择题1. 为了在当前程序中使用ch4中的类,可以使用的语句是( A )。
1.面向对象分析的第一步是 A 。
A.确定问题域 B.确定附加的系统约束 C.定义服务 D.定义类和对象2.在C#语言中引进了类的概念。
类的定义包括类名,类的说明和类的实现, D 是类的外部接口。
A.类的引用 B. 类的实现 C.类的说明 D.类的标识3. A 是类的内部表示。
A.类的说明 B.类的实现 C.类的标识 D.类的构造4.有了 B 可以隐藏类对象内部实现的复杂细节,有效地保护内部所有数据不受外部破坏。
A.多态性 B.封装性 C.兼容性 D.继承性5. D 增强了类的共享机制,实现了软件的可重用性,简化系统的开发工作。
A.多态性 B.封装性 C.兼容性 D.继承性6. A 可实现函数重载和运算符重载。
A.多态性 B.封装性 C.兼容性 D.继承性7.在面向对象程序设计中,常常将接口的定义与接口的实现相分离,可定义不同的类实现相同的接口。
在程序运行过程中,对该接口的调用可根据实际的对象类型调用其相应的实现。
为达到上述目的,面向对象语言须提供 B 机制。
A.继承和过载B.抽象类C.继承和重置D.对象自身应用8.下面关于面向对象的描述正确的是 A 。
A.针对接口编程,而不是针对实现编程B.针对实现编程,而不是针对接口编程C.接口与实现不可分割D.优先使用继承而非组合9.面向对象程序设计语言为 D 提供支持。
A.面向对象用例设计阶段 B.面向对象分析阶段C.面向对象需求分析阶段 D.面向对象实现阶段10.在面向对象方法中,对象是类的实例。
表示对象相关特征的数据称为对象的 C 。
A.数据变量B.数据结构C.属性D.定义11.在类数据上执行的功能操作称为对象的 A 。
A.行为B.调用C.实现D.函数12.一个对象通过发送 B 来请求另一个对象为其服务。
A.调用语句B.消息C. 命令D.函数13.在面向对象技术中,类属是一种 B 机制。
A.包含多态B.参数多态C.过载多态D.强制多态14.一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与 A 的那些部分。
面向对象考试题目和答案一、单项选择题(每题2分,共20分)1. 面向对象程序设计中,对象的状态由()来表示。
A. 属性B. 方法C. 消息D. 类答案:A2. 在面向对象程序设计中,封装的目的是()。
A. 隐藏对象的属性B. 隐藏对象的方法C. 隐藏对象的实现细节D. 隐藏对象的消息答案:C3. 面向对象程序设计中,继承的主要优点是()。
A. 重用代码B. 减少代码量C. 提高程序的可读性D. 所有以上选项答案:D4. 在面向对象程序设计中,多态性是指()。
A. 一个对象可以有多个类B. 一个类可以有多个对象C. 一个消息可以有多个行为D. 一个类可以有多个属性答案:C5. 在面向对象程序设计中,以下哪个不是类的组成部分()。
A. 属性B. 方法D. 函数答案:D6. 在面向对象程序设计中,以下哪个概念不是面向对象的核心概念()。
A. 封装B. 继承C. 多态D. 过程答案:D7. 在面向对象程序设计中,以下哪个概念是面向对象的核心概念之一()。
A. 函数B. 过程C. 消息D. 抽象8. 在面向对象程序设计中,以下哪个不是类的成员()。
A. 属性B. 方法C. 函数D. 消息答案:C9. 在面向对象程序设计中,以下哪个不是类的属性()。
A. 私有属性B. 保护属性C. 公共属性D. 全局属性答案:D10. 在面向对象程序设计中,以下哪个不是类的访问修饰符()。
B. 保护C. 公共D. 静态答案:D二、多项选择题(每题3分,共15分)1. 面向对象程序设计中,以下哪些是类的属性()。
A. 私有属性B. 保护属性C. 公共属性D. 全局属性答案:ABC2. 面向对象程序设计中,以下哪些是类的成员()。
A. 属性C. 函数D. 消息答案:ABD3. 面向对象程序设计中,以下哪些是类的访问修饰符()。
A. 私有B. 保护C. 公共D. 静态答案:ABC4. 面向对象程序设计中,以下哪些是面向对象的核心概念()。
选择题1. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符2. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。
A. 内联函数B.重载函数C.递归函数D.函数模板3. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()4. 对于任一个类,用户所能定义的析构函数的个数至多为( )。
A. 0B. 1C. 2D. 任意个5. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。
A. 函数体B. 参数表C. 初始化表D. 初始化表或函数体6. 假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。
A. 带参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数7. 对于任一个类,用户所能定义的析构函数的个数至多为( )。
A. 0B. 1C. 2D. 任意个8. 用new运算符创建一维整型数组的正确语句是__________。
A. int *p=new a[10];B.int *p=new float[10];C. int *p=new int[10];D.int *p=new int[5]={1,2,3,4,5}9. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为()。
A. pb=b;B. pb=&b[0];C. pb=new int;D. pb=b[5];10. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符11. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。
A. 内联函数B.重载函数C.递归函数D.函数模板12. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()13. 用new运算符创建一维整型数组的正确语句是__________。
C++面向对象程序设计模拟试题四一、单项选择题(本大题共10小题,每小题2分,共20分)1.下列关于C++函数的说明中,正确的是()。
A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式2.假定MyCIass为一个类,那么下列的函数说明中,()为该类的无参构造函数。
A)void MyClass(); B)~MyClass(int n); C)MyClass( ); D)~MyClass( );3.下列叙述中,错误的是()。
A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合4.当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中()。
A. 都是虚函数B. 只有被重新说明为vittual时才是虚函数C. 都不是虚函数D. 上面都不正确5.派生类的构造函数的成员初始化表中,不能包含()。
A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化6.下列是重载加法运算符的函数原型声明,其中错误的是()。
A)MyClass operator+(double,double); B)MyClass operator+(double,MyClass);C)MyClass operator+(MyClass,double); D)MyClass operator+(MyClass,MyClass);7.派生类中的成员不能直接访问基类中的()成员。
A)public B)private C)virtual D)protected8.实现运行时的多态性要使用()。
A)重载函数B)析构函数C)构造函数D)虚函数9.如果在类MyClass的外面使用函数调用MyClass::f();则函数f()是类MyClass的()。
《面向对象程序设计C++》期末考试试卷(B)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第8页上)】一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( D )是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,(A )是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。
>A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( A )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是( D )。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的^D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了(D )次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是( B )。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型。
一、单项选择题下面每题的选项中,只有一个是正确的,请选择正确的答案填入答题纸中对应的题号后(本题共25小题,每小题1分,共25分)。
1、当一个函数无返回值时,函数的类型应定义为()。
A voidB 任意C int D无2、作用域运算符的功能是()。
::A 标识作用域的级别B 指出作用域的范围C 给定作用域的大小D标识某个成员是属于哪个类3、下列的()是引用调用。
A 形参是指针,实参是地址值B 形参和实参都是变量C 形参是数组名,实参是数组名D形参是引用,实参是变量4、()不是构造函数的特征A 构造函数的名和类名相同B 构造函数可以重载。
C 构造函数可以设置默认值D构造函数必须指定类型说明。
5、下列()不能作为类的成员。
A 自身类对象的指针B 自身类对象的引用C自身类对象 D 另一个类的对象6、重载函数在调用时选择的依据,()是错误的。
A. 参数个数 B 参数的类型C A或者B D函数的类型7、下列静态成员的特性中,()是错误的。
A 说明静态成员时,要加修饰符staticB 静态数据成员要在类体外进行初始化C 引用静态数据成员时,要在静态数据成员名前加<类名>及作用域运算符D静态数据成员不是所有对象所共用的8、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用()是正确的。
A p=f1B p=A::f1C p=A::f1()D p=f1()9、运算符->*的功能是()。
A a p=&a public inti. int p2=&ip->*p2 p->*p2 a.iA用来表示指向对象指针对指向类成员指针的操作B 用来表示对象对指向类成员指针的操作C 用来表示指向对象指针对类成员的操作D 用来表示对象类成员的操作10、下列定义中,()是定义指向数组的指针p.A int p[5]B int (*p)[5]C (int*)p[5]D int *p[ ]11、设p为一个指向类A数据成员m的指针,A1为A的一个对象。
《面向对象程序设计》习题一、单项选择题1、下面关于引用的说法错误的是( )。
A、引用是被引用对象的别名B、对引用的修改就是对被引用对象的修改,反之亦然C、引用不一定立即初始化D、引用不能建立数组2、用new运算符创建一个含有10个元素的一维整型数组的正确语句是( )。
A、int p = new int(10);B、int p = new int[10];C、int *p = new int [10];D、int *p = new int(10);3、下面是五条顺序出现的声明语句,非法的初始化语句是( )。
A、int i = –1;B、const int ic=i;C、const int *pc=⁣D、int *const cpi=⁣E、const int *const cpic= ⁣4、下列说法不正确的是( )。
A、在类中,成员的默认访问特性是私有的。
B、类封装了数据和操作。
C、类实质上是一种数据类型。
D、在类的定义中,必须包含private、public、protected三种存取方式对应得部分。
5、下列说法不正确的是( )。
A、在类中不能对所定义的数据成员进行初始化。
B、类的公有成员函数是类与外界的接口。
C、同一个类的两个对象占用相同的内存空间。
D、类实现数据隐藏。
6、下列程序段不会发生二义性的是( )。
A、int fun(double p){...;}B、int fun(float p){...;}float fun(float p){...;} float fun(unsigned p){...;}int x; int x;x=fun(0); x=fun(0);C、int fun(int i,int j=2){...;}D、int fun(int i=2,int j=2){...;}float fun(int i){...;} int fun(int *p){...;}cout<<fun(5); cout<<fun(5);7、关于以下程序段中语法错误的正确描述是( )。
C++面向对象程序设计-编程题C++面向对象程序设计2010期末考试编程题1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角三角形)。
#include<iostream>#include<math.h>using namespace std;int main(){double a,b,c;double v,p;cout<<"请输入三角形三条边:"<<endl;cin>>a>>b>>c;if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;v=sqrt(p*(p-a)*(p-b)*(p-c));cout<<"该三角形面积是"<<v<<endl;if(a==b&&a==c)cout<<"该三角形是等边三角形!"<<endl;elseif(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a)cout<<"该三角形是等腰三角形!"<<endl;if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))cout<<"该三角形是直角三角形!"<<endl;}elsecout<<"这三条边组不成三角形!"<<endl;return 0;}2、定义一个学生类,其中有3 个数据成员:学号、姓名、年龄,以及若干成员函数。
同时编写main 函数使用这个类,实现对学生数据的赋值和输出。
2面向对象程序设计基础2.1单项选择题1.下面关于类的继承性的描述中,错误的是()。
A.继承是在已有的基础上生成新类的一种方法B.Java语言要求一个子类只有一个父类C.父类中成员的访问权限在子类中将被改变D.子类继承父类的所有成员,但不包括私有的成员方法2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是()。
A.默认B.protected C.private D.public3.在类的修饰符中,规定只能被同一包类所使用的修饰符是()。
A.public B.默认C.final D.abstract4.下列关于子类继承父类的成员描述中,错误的是()。
A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。
B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。
C.子类中继承父类中的所有成员都可以访问。
D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。
5.下列关于继承性的描述中,错误的是()。
A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员C.Java支持单重继承和多重继承D.Java通过接口可使子类使用多个父类的成员6.下列关于抽象类的描述中,错误的是()。
A.抽象类是用修饰符abstract说明的 B.抽象类是不可以定义对象的C.抽象类是不可以有构造方法的D.抽象类通常要有它的子类7.下列关于构造方法的叙述中,错误的是()。
A.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承8.下面叙述中,错误的是()。
A.子类继承父类B.子类能替代父类C.父类包含子类D.父类不能替代子类9.下面关于接口的描述中,错误的是()。
A.一个类只允许继承一个接口B.定义接口使用的关键字是interfaceC.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现D.接口实际上是由常量和抽象方法构成的特殊类10.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?()A.ArrayList myList=new Object(); B.ArrayList myList=new List();C.List myList=new ArrayList(); D.List myList=new List();11.下列哪一个方法与方法public void add(int a){}为不合理的重载方法?()A.public void add(char a) B.public int add(int a)C.public void add(int a,int b) D.public void add(float a)12.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是()。
面向对象程序设计C++复习题一、单选题1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是(D )A. 公有类型B. 私有类型C. 保护类型D. 友元类型2.下列关于多态性的描述,错误的是( C )A. C++语言的多态性分为编译时的多态性和运行时的多态性B. 编译时的多态性可通过函数重载实现C. 运行时的多态性可通过模板和虚函数实现D. 实现运行时多态性的机制称为动态绑定3.在C++语言中,数据封装要解决的问题是( D )A. 数据的规范化B. 便于数据转换C. 避免数据丢失D. 防止不同模块之间数据的非法访问4.使用private修饰的成员变量,以下说法正确的是(A )A. 只能由本类中的函数使用,不能被外面的程序所访问。
B.可以由本类中的函数使用,也可以被外面的程序所访问。
C. 只能由本类和派生类中的函数使用。
D. 可以在主函数中使用。
5.对类的构造函数和析构函数描述正确的是(A )A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载6.下面对静态数据成员的描述中,正确的是(A )A. 静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用7.在VC++语言类体系中,不能被派生类继承的有(B )A. 转换函数B.构造函数C.虚函数D.静态成员函数8.下面关于句柄正确的说法是(A )A. 句柄是一个标识Windows资源和设备等对象的变量。
B. 句柄是用户程序自定义的数据类型。
C. 用户程序使用句柄时不需要定义。
D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。
9.下面关于动态链接库正确的说法是(B )A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。
java面向对象程序设计考试题及答案一、选择题(每题2分,共10分)1. 在Java中,以下哪个关键字用于定义类的属性?A. staticB. finalC. privateD. public答案:C2. 以下哪个方法用于在Java中创建对象?A. newB. createC. makeD. construct答案:A3. 哪个关键字用于在Java中定义一个方法?A. functionB. methodC. defineD. procedure答案:B4. 在Java中,哪个关键字用于实现类的继承?A. extendsB. inheritC. deriveD. base答案:A5. Java中接口和抽象类的主要区别是什么?A. 接口没有构造方法,抽象类有B. 接口可以有实现,抽象类不能C. 接口不能有属性,抽象类可以D. 接口可以有私有方法,抽象类不可以答案:A二、填空题(每空1分,共10分)1. 在Java中,一个类可以继承另一个类的属性和方法,这种特性称为____。
答案:继承2. Java中,一个类只能继承一个父类,这是Java的____特性。
答案:单继承3. 当一个类实现了一个接口时,它必须实现接口中所有的____方法。
答案:抽象4. Java中,____关键字用于声明一个类是抽象的。
答案:abstract5. 在Java中,____关键字用于声明一个方法没有具体的实现。
答案:abstract三、简答题(每题10分,共20分)1. 请简述Java中封装的概念及其重要性。
答案:封装是面向对象编程中的一个核心概念,它指的是将对象的状态(属性)和行为(方法)结合在一起,并隐藏对象的内部实现细节。
封装的重要性在于它提高了代码的安全性和可维护性,使得对象的内部状态不会被外部代码随意访问和修改,从而保护了对象的完整性。
2. 描述Java中多态的概念及其作用。
答案:多态是面向对象编程中的一个特性,它允许不同类的对象对同一消息做出响应。
《面向对象程序设计C++ 》期末考试一试卷( A )班级:姓名:学号:分数:题号一二三四总分得分试卷说明:本套试题共四个大题,所有题目都答在答题纸上,写在其余地方均无效。
(答题纸在本套试卷的第10 页上)一、选择题(每题 2 分,共 40 分)1、C++是()。
A.面向对象的程序设计语言B.面向过程的程序设计语言C.既支持面向对象的程序设计又支持面向过程的程序设计的混淆型语言D.非结构化的程序设计语言2、面向对象程序设计思想的主要特点中不包含()。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐渐求精3、若定义: string str;当语句cin>>str;履行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=()。
B. MicrosoftA. Microsoft Visual Studio 6.0!C. Microsoft Visual4、考虑下边的函数原型申明:void testDefaulParam(int a,int b=7,char z='*');下边函数调用中,不合法的是()。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、以下语句中,将函数 int sum(int x, int y) 正确重载的是()。
A. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);6、以下表示引用的方法中,()是正确的。
已知: int a=1000;A. int &x=a;B. char &y;C. int &z=1000;D. float &t=&a;7、在一个函数中,要求经过函数来实现一种不太复杂的功能,而且要求加速履行速度,采纳()。
面向对象程序设计C++ 第一套试卷一、选择题(共32分,每小题2分)1.按照C++标识符的规则,下面( B )是c++的标识符。
A.8_afrB.a_ideC.t-axyD._3?d2.C++中声明常量的关键字是( A )A.constB.externC.publicD.enum3.建立( C )的作用是为变量另起一个名字。
A.指针B.枚举C.引用D.结构4.在( D )情况下适宜采用内联函数。
A.函数体含有循环语句B.函数代码多,频繁调用C.函数体含有递归语句D. 函数代码少,频繁调用5.关于new运算符的下列描述中,错误的是( D )A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值6.类成员的访问权限中,( C )只能被本类的成员函数和其友元函数访问。
A.shareB.publicC.privateD.protected7.在下面有关构造函数的描述中,正确的是( B )A.构造函数可以带有返回值B.构造函数名字与类名完全相同C.构造函数必须带参数D.构造函数必须定义,不能默认8.有如下类声明:class A{ private: int x;public: A(int n){ x=n;} };class B: public A{ private: int y;public: B(int a,int b); };在构造函数B的下列定义中,正确的是( C )。
A. B::B(int a,int b): x(a),y(b){ }B. B::B(int a,int b): x(a),B(b){ }C. B::B(int a,int b): A(a),y(b){ }D. B::B(int a,int b): A(a),B(b){ }9.设置虚基类的目的是( B )A.简化程序B.消除二义性C.提高运行效率D.减少目标代码10.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( C )A.public成员B. protected成员C.private成员D.友元11. 应在下列程序划线处填入的正确语句是( D )#include<iostream>using namespace std;class Base{ public: void fun(){cout<<"Base::fun"<<endl;}};class Derived:public Base{ public: void fun() {cout<<"Derived::fun"<<endl;}};void main(){ Derived obj;_____________ //调用基类的fun函数}A.obj.fun(); B. Base.fun(); C. Base->fun(); D. obj.Base::fun();12. 假定一个类的构造函数为B(int x,int y){a=x;b=a*y;},则执行B obj(3,5); 语句后,obj.a和obj.b的值分别为( C )A.3和5 B.5和3 C.3和15 D.20和513.模板的使用是为了( A )A.提高代码的可重用性B.提高代码的运行效率C.加强类的封装性D.实现多态性14.在下列选项中( A )不是ostream类的对象。
第 1 页 共 25 页 一、单项选择题 1. 在C++语言中,对函数参数默认值描述正确的是:( D ) A) 函数参数的默认值只能设定一个 B) 一个函数的参数若有多个,则参数默认值的设定可以不连续 C) 函数参数必须设定默认值 D) 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值 2. 假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的( B ) 。 A) 有参构造函数 B) 无参构造函数 C) 拷贝构造函数 D) 赋值构造函数 3. 下述关于开关语句的描述中,( )是正确的。 A) 开关语句中default子句可以没有,也可以有一个; B) 开关语句中每个语句序列中必须有break语句; C) 开关语句中default子句只能放在最后; D) 开关语句中case子句后面的表达式可以是整形表达式。 4. 关于对象概念的描述中,( ) 是错误的。 A) 对象就是C语言中的结构变量; B) 对象代表着正在创建的系统中的一个实体; C) 对象是一个状态和操作(或方法)的封装体; D) 对象之间的信息传递是通过消息进行的; 5. 下列给字符数组进行初始化中,( )是正确的。 A) char s1[ ]="12345abcd"; B) char s2[3]="xyz"; C) char s3[][3]={ 'a', 'x', 'y'}; D) char s4[2[3]={"xyz","mnp"}; 6. 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是 ( ) 。 A) 3 B) 2 C) 6 D) 4 7. 声明类test的拷贝构造函数的正确形式是 ( D ) 。 A) int test B) void test C) test(void) D) test(test&) 8. 关于new运算符的下列描述中,( ) 是错的。 A) 它可以用来动态创建对象和对象数组; B) 使用它创建的对象或对象数组可以使用运算符delete删除; C) 使用它创建对象时要调用构造函数; D) 使用它创建对象数组时必须指定初始值。 9. 在 C++ 中有以下 4 条语句: static int hot=200;int &rad=hot; hot=hot+100;cout 11. 下面关于重载函数的说明中正确的是( )。 A) 重载函数必须具有不同的返回类型。 B) 重载函数形参的个数必须不同 C) 重载函数必须具有不同的形式参数表 D) 重载函数名可以不同 12. 下列关于C++函数的说明中,正确的是( )。 A) 内联函数就是定义在另一个函数体内部的函数 B) 函数体的最后一条语句必须是 return 语句 C) C++要求在调用一个函数前必须先声明其原型 D) 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 13. 已知函数原型为: void foo(int*, long &b); 实参定义为: int i; long f; 则正确的调用语句是( ). A) foo(i, &f); B) foo(i, f); C) foo(&i, f); D) foo(&i, &f); 14. C++中对于结构中定义的成员,其默认的访问权限为( )。 A) public B) protected C) private D) static 15. 下列关于类与对象的说法中,不正确的是( )。 A) 对象是类的一个实例 B) 任何对象只能属于一个具体的类 C) 一个类只能有一个对象 D) 类与对象的关系和数据类型与变量的关系相似 16. 下列关于构造函数的描述中错误的是( ) A) 构造函数可以设置默认参数 B) 构造函数在定义类对象时自动执行 C) 构造函数可以对静态数据成员进行初始化 D) 构造函数不可以重载 17. 类的析构函数的作用是( )。 A) 作为类的一般成员函数 B) 类的初始化 C) 对象的初始化 D) 对象的删除 18. 以下关于静态数据成员的描述正确的是( )。 A) 静态数据成员可以在类体中进行初始化 B) 静态数据成员不可以被类的实例调用 C) 静态数据成员不能受protected控制符的作用 D) 静态数据成员可以直接用类名调用 19. 下面关于友元函数的描述中正确的是( )。 A) 友元函数的实现必须在类的内部定义 B) 友元函数是类的成员函数 C) 友元函数破坏了类的封装性和隐藏性 C) 友元函数不能访问类的私有成员 20. 下面关于友元函数的描述中错误的是( )。 A) 如果类A是类B的友元,那么类B也是类A的友元 B) 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C) 友元关系不能被继承 D) 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数 第 3 页 共 25 页 21. 下列属于C++语句的是 。 A) ; B) a=17 C) a+5 D) cout<<’\n’ 22. 执行语句k=30;j=k++;后k和j的值分别为 。 A) k=30,j=30 B) k=30,j=31 C) k=31,j=30 D) k=31,j=31 23. 若X是一个bool型变量,则X && 5<3的值 。 A) 为true B) 为false C) 与X的值相同 D) 与X的值相反 24. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:cA) 3 B) 2 C) 1 D) 4 25. 执行下列语句后的输出结果是 。 int hot=100; int &rad=hot; hot+=100; cout< A) 0 B) 100 C) 200 D) 300 26. 下列关于break语句的叙述不正确的是 。 A) break语句可用于循环体中,它将使执行流程跳出本层循环体; break语句可用于switch语句中,它将使执行流程跳出当前的switch语句; break语句可用于if语句中,它将使执行流程跳出当前if语句; break语句在一层循环体中可以出现多次。 27. 下面关于类的对象性质的描述,正确的是 。 A) 对象之间不可以相互赋值 B) 不可以说明指向对象的指针 C) 对象不能用作数组元素 D) 一个对象能用作另一个对象的成员 28. 在 C++ 中实现封装是借助于 。 A) 枚举 B) 类 C) 数组 D) 函数 29. 下列不是描述类的成员函数的是 。 A) 构造函数 B) 析构函数 C) 友元函数 D) 拷贝构造函数 30. 不能作为函数重载判断依据的是 。 A) 参数个数 B) 参数类型 C) 函数名称 D)返回值类型 31. 假定一个类的构造函数为 A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 A X(4,5); 语句后, X.a 和 X.b 的值分别为 。 A) 4 和 5 B) 5 和 30 C) 4 和 20 D) 20 和 5 32. 对于double (*p)[10];的描述, 是正确的。 第 4 页 共 25 页 A) p是一个指向数组的指针,所指向的数组是10个double型元素; B) p是一个指向某个数组中第10个元素的指针,该元素是double型变量; C) p[5]表示某个数组的第10个元素的值; D) p是一个具有10个元素的指针数组,每个元素是一个double型指针; 33. 下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数? A) int BC(int a, int b) B) void BC(int a, char b) C) float BC(int a, int b, int c = 0) D) void BC(int a, int b=0) 34. 已知 char c; char * const pc="asdf", 是正确的。 A) pc="dfgh" B) *pc=‘b’ C) *pc++=‘y’ D) pc=&c 35. 下列关于构造函数的叙述,错误的是 。 A) 构造函数可以设置默认参数; B) 构造函数在说明类变量时自动调用; C) 构造函数可以对静态数据成员进行初始化; D) 构造函数可以重载; 36. 下列关于构造函数的描述中错误的是( ) A) 构造函数可以设置默认参数 B) 构造函数在定义类对象时自动执行 C) 构造函数可以对静态数据成员进行初始化 D) 构造函数不可以重载 37. 类的析构函数的作用是( )。 A) 作为类的一般成员函数 B) 类的初始化 C) 对象的初始化 D) 对象的删除 38. 以下关于静态数据成员的描述正确的是( )。 A) 静态数据成员可以在类体中进行初始化 B) 静态数据成员不可以被类的实例调用 C) 静态数据成员不能受protected控制符的作用 D) 静态数据成员可以直接用类名调用 39. 下面关于友元函数的描述中正确的是( )。 A) 友元函数的实现必须在类的内部定义 B) 友元函数是类的成员函数 C) 友元函数破坏了类的封装性和隐藏性 C) 友元函数不能访问类的私有成员 40. 下面关于友元函数的描述中错误的是( )。 A) 如果类A是类B的友元,那么类B也是类A的友元 B) 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C) 友元关系不能被继承 D) 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数 41. 重载函数在调用时选择的依据中,错误的是 ( ) A. 函数的参数 B. 参数的类型 C. 函数的名字 D. 函数的类型 42. 一个函数功能不太复杂,但要求被频繁调用,选用 ( . ) A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数 43. 下列不是描述类的成员函数的是 ( ) A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 44. 构造函数不具备的特征的是 ( ) A. 构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置默认参数 D. 构造函数可以指定返回类型