面向对象C++复习题
面向对象程序设计 C 复习题

一选择题(共 45题)1.对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载√B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B.传递性√ C.重复性 D.多样性3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。
(OneClass p); B. OneClass& (OneClass p );C. OneClass(OneClass & p);√D. OneClass (OneClass * p);4.对于结构中定义的成员,其默认的访问权限为()。
B. protected D. static5.下面对静态数据成员的描述中,不正确的是()。
A.静态数据成员可以在类体内进行初始化√B.静态数据成员不可以在类体内进行初始化C.静态数据成员能受private控制符的作用D.静态数据成员调用前必须初始6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。
A.复用B.继承√C.封装D.引用7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。
A. x(a)B. x[a]C. x->aD. √9. 对于一个类的构造函数,其函数名与类名( )。
A. 完全相同√B. 基本相同C. 不相同D. 无关系10. 一个类的构造函数通常被定义为该类的( )成员。
A. 公有√B. 保护C. 私有D. 友元11. 一个类的析构函数通常被定义为该类的( )成员。
A. 私有B. 保护C. 公有√D. 友元12. 一个类的静态数据成员所表示属性 ( )。
A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性√D. 类和友元的属性13.类的析构函数的作用是()。
C++面向对象技术复习题汇总(含答案)

C++面向对象技术复习题汇总(含答案)面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。
A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’; B、name=”lin”;C、name=new char[5]; D、cout<<name[3];< bdsfid="94" p=""></name[3];<>7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板()templateT max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin>>x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y) {…… }(2) int f(int a,float b){…… }(3) int f(int i,int j){…… }(4) float k(int x){…… }是重载函数。
《面向对象程序设计c》综合复习题集及答案详解

《面向对象程序设计c》综合复习题集及答案详解综合复习题集一、单选题1.C++源程序文件的缺省扩展名为(A)。
A.cppB.e某eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.e某eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()。
A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件7.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符8.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数9.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。
A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。
C#面向对象程序设计复习试题

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 的那些部分。
c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。
c 面向对象程序设计语言重点难点复习题及答案

1、数据共享与保护一、选择题:1、在下面存储类中, ( C ) 对象的可见性与生存期不一致。
A. 外部类B. 自动类C. 内部静态类D. 寄存器类2、在下面存储类中,(A)的对象不是局部变量。
A. 外部静态类B. 自动类C. 函数形参D. 寄存器类3、关于局部变量,下面说法正确的是( C )。
A. 定义该变量的程序文件中的函数都可以访问B. 定义该变量的函数中的定义处以下的任何语句都可以访问C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问D. 定义该变量的函数中的定义处以上的任何语句都可以访问4、一个类的静态数据成员所表示属性 ( C )。
A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性D. 类和友元的属性5、类的静态成员的访问控制( D)。
A. 只允许被定义为privateB. 只允许被定义为private或protectedC. 只允许被定义为publicD. 可允许被定义为private、protected或public6、静态成员函数对类的数据成员访问(B)。
A. 是不允许的B. 只允许是静态数据成员C. 只允许是非静态数据成员D. 可允许是静态数据成员或非静态数据成员7、被非静态成员函数访问的类的数据成员( A )。
A. 可以是非静态数据成员或静态数据成员B. 不可能是类的静态数据成员C. 只能是类的非静态数据成员D. 只能是类的静态数据成员8、静态数据成员的初始化是在(D)中进行的。
A. 构造函数B. 任何成员函数C. 所属类D. 全局区9、当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( D )。
A. 只能是公有成员B. 只能是保护成员C. 只能是除私有成员之外的任何成员D. 具有任何权限的成员10、引入友元的主要目的是为了( C )。
A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性11、一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明( A )。
c面向对象期末复习

c面向对象期末复习c++面向对象期末复习一、题型:1. 单项选择题(在每小题地四个备选答案中,选出一个正确答案,并将正确答案地序号填在题干地括号内.每小题2分,共20分)2. 填空题(每小题2分,共22分)3. 给出下列程序运行后地输出结果(每小题8分,共24分)4. 写出下列每个函数地功能(每小题8分,共16分)5. 编写程序(18分)二、练习题:-----------------------------------练习题1:{一}、单项选择题(在每小题地四个备选答案中,选出一个正确答案,并将正确答案地序号填在题干地括号内.每小题2分)1、在每个C++程序中都必须包含有这样一个函数,该函数地函数名为(A )A. mainB. MAINC. nameD. function2、设x和y均为bool量,则x&&y为真地条件是( A )A. 它们均为真B. 其中一个为真C. 它们均为假D. 其中一个为假3、下面地哪个保留字不能作为函数地返回类型?( C )A. voidB. intC. newD. long4、假定a为一个整型数组名,则元素a[4]地字节地址为( C )A. a+4B. a+8C. a+16D. a+325、假定要对类AB定义加号操作符重载成员函数,实现两个AB 类对象地加法,并返回相加结果,则该成员函数地声明语句为:( B )A. AB operator+(AB&a,AB&b)B. AB operator+(AB& a)C. operator+(AB a)D. AB & operator+( )6.类地析构函数地作用是( D )A.一般成员函数B.类地初始化C.对象地初始化D.撤消对象时所做地清理工作7.类地析构函数是在( C )调用地.A.类创建时B.创建对象时C.删除对象时D.不自动调用8.在( C )情况下适宜采用inline定义内联函数.A.函数体含有循环语句B.函数体含有递归语句C.函数代码少、频繁调用D.函数代码多、不常调用9.假定AB为一个类,则执行AB x;语句时将自动调用该类地( B )A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函数10.C++语言建立类族是通过( B )A.类地嵌套B.类地继承C.虚函数D.抽象类(二)、填空题(每小题2分)1、执行“cout <<char('a'+2)<<="" c="" p="">2、float 和double 类型地大小分别为 4 和8 .3、算术表达式(xy2/3a)+4b-1对应地C++表达式为((x*y*y)/(3*a))+4*b-1 .4、关系表达式x+y>5地相反表达式为x+y<=5 .5、假定一个一维数组地定义为“char * a[8] ;”,则该数组所含元素地个数为8 ,所占存储空间地字节数为32 .6、变量分为全局和局部两种, 局部变量没有赋初值时,其值是不确定地.7、假定a是一个二维数组,则a[i][j]地指针访问方式为.8、假定一个结构类型定义为“struct D{int a;union{int b;double c;}; D * d[2] ; } ;”,则该类型地大小为字节.9、对一个类中地数据成员地初始化可以通过构造函数中地实现,也可以通过构造函数中地实现.10、假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类地构造函数地次数为.11、假定类AB中有一个公用属性地静态数据成员bb,在类外不通过对象名访问该成员bb地写法为.(三)、给出下列程序运行后地输出结果(每小题8分)1、# includeint a=5;void main() {int a=10,b=20;cout <<a<<' '<<b<<endl;<="" p="">{ int a=0,b=0;for (int i=1; i<6; i++) {a+=i; b+=a;}cout <<a<<' '<<::a<<endl;<="" '<<b<<'="" p=""> }cout <<a<<' '<<b<<endl;<="" p="">}2、# includeint LB(int *a,int n) {int s=1;for (int i=0; i<="" p="">s*=*a++;return s;}void main() {int a[]={1,2,3,4,5,6,7,8};int b=LB(a,5)+LB(&a[3],3);cout <<"b="<<b<<endl;< p="">}3、# include# includestruct Worker{char name[15]; // 姓名int age; // 年龄float pay; // 工资};void main() {Worker x;char *t="liouting";int d=38; float f=493;strcpy(/doc/f91145865.html,,t); x.age=d; x.pay=f;cout <}(四)、写出下列每个函数地功能(每小题8分)1、# includeint SA(int a,int b) {if (a>b) return 1;else if (a==b) return 0;else return -1;}2、struct StrNode {char name[15]; // 字符串域StrNode * next; // 指针域};void QB(StrNode * & f ,int n) {if (n==0) { f=NULL; return; }f=new StrNode;cin >>f->name;StrNode * p=f;while (--n) {p=p->next=new StrNode;cin >>p->name;}p->next=NULL;}(五)、编写程序把从键盘上输入地一批整数(以-1作为终止输入地标志)保存到文本文件“a:xxk1.dat”中.------------------------------------------练习题2:一、选择题(每题2分)一个函数功能不太复杂但要求被频繁调用,应选用A)内联函数B)重载函数C)递归函数D)嵌套函数A 为了使类中地某个成员不能被类地对象通过成员操作符访问,则不能把该成员地访问权限定义为A)public B)protected C)privateD)static(3)B 在C++语言程序中,对象之间地相互通信通过A)继承实现B)调用成员函数实现C)封装实现D)函数重载实现类地析构函数是在什么时候调用地?A)类创建时B)创建对象时C)删除对象时D)不自动调用C 通常拷贝构造函数地参数是A)某个对象名B)某个对象地成员名C)某个对象地引用名D)某个对象地指针名下列不是描述类地成员函数地是A)构造函数B)析构函数C)友元函数D)拷贝构造函数C 继承机制地作用是A)信息隐藏B)数据封装C)定义新类D)数据抽象B 在C++语言类体系中,不能被派生类继承地有A)转换函数B)构造函数C)虚函数D)静态成员函数C 对于类定义class A{public:virtual void funcl(){}void func2(){}};class B:public A{public:void funcl(){cout<<"class B func 1”;virtual void func2(){cout<<"class B func 2";};下面正确地叙述是A)A::func2()和B::funcl()都是虚函数B)A::func2()和B::funcl()都不是虚函数C)B::funcl()是虚函数,而A::func2()不是虚函数D)B::funcl()不是虚函数,而A::func2()是虚函数下面关于运算符重载地描述错误地是A)运算符重载不能改变操作数地个数、运算符地优先级、运算符地结合性和运算符地语法结构B)不是所有地运算符都可以进行重载C)运算符函数地调用必须使用关键字operatorD)在C++语言中不可通过运算符重载创造出新地运算符作用域运算符地功能是()A)给定作用域地大小B)表示作用域地级别C)某个成员是属于哪个类地D)指出作用域地范围D ()不是构造函数地特征A)构造函数可以重载B)构造函数可以设置缺省参数C)构造函数地函数名和类名相同D)构造函数必须指定类名13 关于new运算符地下列描述中,()是错地A)使用它创建对象时要调用构造函数B)使用它创建对象数组时必须指定初始值C)使用它创建对象数组时不能指定初始值D)使用它创建地对象或对象数组可以使用运算符delete删除派生类地描述中,()是错地A)一个派生类可以作为另一个派生类地基类B)派生类至少有一个基类C)派生类中继承地基类成员地访问权限在派生类中保持不变D)派生类地成员除了它自己地成员外,还包含了它地基类地成员设置虚基类地目地是(). A)减少目标代码B)提高运行效率C)消除二义性D)简化程序D 以下关于虚函数和纯虚函数地说法中,()是不正确地A)在派生类中虚函数可以不用关键字virtual说明B)虚函数在派生类中都不需要重定义C)不能为虚函数定义缺省操作D)纯虚函数在派生类中可以不重定义C 以下关于抽象类地说法中,()是不正确地A)不可创建抽象类地实例B)可以声明抽象类地引用C)抽象类地派生类也是抽象类D)抽象类地派生类也可以是抽象类D 以下关于多态性地说法中,(?)是不正确地A)每个多态类地基类有一个虚函数表B)多态类地每一个派生类有一个虚函数表C)每个多态类地对象有一个虚表指针D)虚函数调用与this指针无关C C++语言对C语言做了很多改进,C++语言相对于C语言地最根本地变化是A)增加了一些新地运算符B)允许函数重载,并允许设置缺省参数C)规定函数说明符必须用原型D)引进了类和对象地概念(20)在公有派生情况下,有关派生类对象和基类对象地关系,下列叙述不正确地是A)派生类地对象可以赋给基类地对象B)派生类地对象可以初始化基类地引用C)派生类地对象可以直接访问基类中地成员D)派生类地对象地地址可以赋给指向基类地指针二、填空题(每空3分)(1) 一个类可以从直接或间接地基类中继承所有属性和方法.采用这个方法提高了软件地可重用性 .(2)在C++中封装性、继承性和多态性是面向对象思想地主要特征.(3)下列for语句地循环次数为 5 .for(int a=0,b=1;b&&a<5;a++);(4) 下面程序地输出结果是12345 .#includevoid main(){int a[6]={1,2,3,4,5,6};for(int i=0;i<5;i++)cout<<i;< p="">cout<<endl;< p="">}(5) C++程序是从主函数开始执行地.(6) 假定A为一个类,则语句A (A & A);为该类拷贝虚构函数 .(7) 派生类构造函数地执行顺序是先执行基类地构造函数.然后执行成员对象地构造函数,最后执行派生类地构造函数.(8) C++语言提供地基本控制结构可以分为3种类型:顺序结构、选择结构和循环结构.(9) 继承地方式有公有继承、私有继承和保护继承 3种.三、名词解释(每题2.5分)1.类2.对象3.封装性4.继承性四、阅读程序并写出结果(每题2分)1.#includeclass A{static int n;public:A(){n=1;}A(int num){n=num;}void print(){cout<<n;}< p="">};int A::n=2:void main(){A a,b(3);a.print();b.pint();cout<<endl;< p="">}2.#includeclass base{public:base(){ cout<<”0”;}};class basel:virtual base}public:base1(){cout<<”1”;}};class base2:virtual base{public:base2(){cout<<”2”;}};class derived:public base1,public base2 { public:derived(){cout<<”3”;}};void main(){derived obj;cout<<endl;< p="">}3.#includeint fun(int a[], int n){int result=1:for(int i=1;i<n;i++)< p="">result=result*a[i];return result;}void main(){int a[3]={3,4,5};cout<<fun(a,3);< p="">}4.#includevoid main( ){int i=1;while(i<=8)if(++i%3!=2) continue;else cout<<i;< p="">}5.#includeclass M{int m1,m2;public:M(int x,int y){m1=x; m2=y;}void print(){cut<<m1<<”,”<<m2<<endl;}< p=""> void print()const;};void M::print()const{cut<<m1+m2<<endl;< p="">}void main(){M a(5,4);a.print();const M b(8,7);b.print();}五、程序设计写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形),Square(正方形),Triangle(三角形).用虚函数分别计算几种图形面积,并求它们地和.要求用基类指针数组,使它地每一个元素指向一个派生类对象,其中圆半径radius为15.2,正方形边长length 为6.5,三角形底边长bottom为5.4,高height为6.8.</m1+m2<<endl;<></m1<<”,”<<m2<<endl;}<></i;<></fun(a,3);<></n;i++)<></endl;<></endl;<></n;}<></endl;<></i;<></b<<endl;<></a<<'></a<<'></a<<'></char('a'+2)<。
c面向对象期末考试试题

c面向对象期末考试试题# 面向对象期末考试试题## 一、选择题(每题2分,共20分)1. 在面向对象编程中,封装的目的是:- A. 隐藏实现细节- B. 提高代码执行效率- C. 增加代码的可读性- D. 减少内存使用2. 下列哪个是Java中合法的类名?- A. 2class- B. Class- C. class$- D. _class3. 在Java中,以下哪个关键字用于定义一个类?- A. `public`- B. `class`- C. `interface`- D. `void`4. 以下哪个方法可以用于获取对象的内存地址?- A. `toString()`- B. `hashCode()`- C. `equals()`- D. `getClass()`5. 面向对象编程中的继承主要用来实现:- A. 代码复用- B. 多态性- C. 封装性- D. 抽象性6. 在Java中,`final`关键字可以用于:- A. 声明一个不可变变量- B. 声明一个不可被子类继承的类- C. 声明一个不可被重写的构造方法- D. 声明一个不可被重写的方法7. 以下哪个是Java的访问控制修饰符?- A. `public`- B. `static`- C. `abstract`- D. `volatile`8. Java中哪个关键字用于定义接口?- A. `class`- B. `struct`- C. `interface`- D. `enum`9. 以下哪个是Java中多态性的表现?- A. 一个类可以继承多个类- B. 一个类可以有多个构造方法- C. 一个方法可以有多个实现- D. 一个接口可以有多个实现类10. 在Java中,以下哪个是正确的方法重写规则?- A. 子类重写的方法必须与父类方法的返回类型相同- B. 子类重写的方法可以改变访问控制修饰符- C. 子类重写的方法可以减少方法的参数- D. 子类重写的方法可以抛出新的检查型异常## 二、简答题(每题10分,共20分)1. 解释什么是多态性,并给出一个Java代码示例,展示如何实现多态性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单选题(每小题2分,共30分)1. C++源程序文件的缺省扩展名为( A )。
A. cppB. exeC. objD. lik2. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。
A. 12B. 144C. 156D. 2883. 设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是( )。
A. 15B. 26,15C. 15,26D. 264. 字符串”a+b=12\n”的长度为()。
A. 6B. 7C. 8D. 95. 假定下列x和y均为int型变量,则不正确的赋值为()。
A. x+=y++B. x++=y++C. x=++yD. ++x=++y6. 下列的符号常量定义中,错误的定义是()。
A.const M=10;B.const int M=20;C.const char ch;D.const bool mark=true;7. 下列()的调用方式是引用调用。
A. 形参和实参都是变量B.形参是指针,实参是地址值C. 形参是引用,实参是变量D.形参是变量,实参是地址值8. 采用重载函数的目的是()。
A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性9. 在一个类的定义中,包含有()成员的定义。
A. 数据B. 函数C. 数据和函数D. 数据或函数10. 在类作用域中能够通过直接使用该类的()成员名进行访问。
A. 私有B. 公用C. 保护D. 任何11. 在关键字public后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何12. 在关键字private后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何13. 类的构造函数是在定义该类的一个( )时被自动调用执行的。
A. 成员函数B. 数据成员C. 对象D. 友元函数14. 类的析构函数是一个对象被( )时自动调用的。
A. 建立B. 撤消C. 赋值D. 引用15. 对类对象成员的初始化是通过构造函数中给出的( )实现的。
A. 函数体B. 初始化表C. 参数表D. 初始化表或函数体16. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符17. 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为()。
A. 1B. 0C. 与x值相同D. 与x值相反18. 假定下列x和y均为int型变量,则不正确的赋值为()。
A. x+=y++B. x++=y++C. x=++yD. ++x=++y19. 函数调用不可以()。
A.出现在一个表达式中B.出现在执行语句中C.作为一个函数的实参D.作为一个函数的形参20. 采用重载函数的目的是()。
A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性21. 在一个类的定义中,包含有()成员的定义。
A. 数据B. 函数C. 数据和函数D. 数据或函数22. 在类作用域中能够通过直接使用该类的()成员名进行访问。
A. 私有B. 公用C. 保护D. 任何23. 在关键字private后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何24. 当一个类对象离开它的作用域时,系统自动调用该类的( )。
A. 无参构造函数B. 带参构造函数C. 拷贝构造函数D. 析构函数25. 类的析构函数可以带有( )个参数。
A. 0B. 1C. 2D. 任意26. 静态数据成员的初始化是在()中进行的。
A. 构造函数B. 任何成员函数C. 所属类D. 全局区27.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B 的()。
A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.具有任何权限的成员28. 在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。
A. 0B. 1C. 2D. 329. 派生类的成员函数可以直接访问基类的()成员。
A. 所有B. 公有和保护C. 保护和私有D. 私有30. 派生类的对象对其基类中()可直接访问。
A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员31.下面对于指针的描述不正确的是( )。
A.指针是地址变量B.指针不能用除0以外的常量赋值C.两个指针变量的加减法无意义D.指针指向不同基类型的变量长度不同32.下面对于析构函数的描述中不正确的是( )。
A.析构函数是内置函数B.析构函数与类名相同C.析构函数不能有参数D.析函数在对象撤销时自动执行33.下列指针用法中错误的是( )。
A. int i;int*ptr=&i;B. int i;int *ptr;i=*ptr;C. int *ptr;ptr=0;D. int i=5;int *ptr;*ptr=i;34.派生类的对象对它的基类成员中什么是可访问的( )?A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员35.在( )情况下适宜采用inline定义内联函数。
A.函数体含有循环语句B.函数体含有递归语句C.需要加快程序的执行速度D.函数代码多、不常调用36.对基类和派生类的关系描述中,错误..的是( )A.派生类是基类的具体化B.基类继承了派生类的属性C.派生类是基类定义的延续D.派生类是基类的特殊化37.如果类A被说明成类B的友元,则( )。
A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元38.定义析构函数时,应该注意( )。
A.其名与类名完全相同B.返回类型是void类型C.无形参,也不可重载D.函数体中必须有delete语句39. C++语言中所有在函数中定义的变量,连同形式参数,都属于( )A.全局变量B.局部变量C.静态变量D.函数40.在公有继承的情况下,基类成员在派生类中的访问权限( )A.受限制B.保持不变C.受保护D.不受保护41.设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是( )。
A. 2B. -1C. 0D. 142.下列标识符中,不合法的用户标识符为( )。
A. a#bB. _intC. a_10D. PAd43. .继承机制的作用是( )A.信息隐藏B.数据封装C.定义新类D.数据抽象44.每个类( )构造函数。
A.只能有一个B.只可有公有的C.可以有多个D.只可有缺省的45.通常,拷贝构造函数的参数是( )A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名46.重载赋值操作符时,应声明为( )函数。
A.友元B.虚C.成员D.多态47.在私有继承的情况下,基类成员在派生类中的访问权限( )。
A.受限制B.保持不变C.受保护D.不受保护48.构造函数不具备的特征的是( )A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明49..一个函数功能不太复杂,但要求被频繁调用,选用( )A.内联函数B.重载函数C.递归函数D.嵌套函数50.在C++程序中,对象之间的相互通信通过( )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现二、填空题(每题2分,共20分)1. 定义一个函数模板要用到的第一个修饰符是______ template _______。
2. 在函数模板的参数中,用class修饰的参数称为_____虚拟类型(或类型)_____参数。
3. 对象将其大部分实现细节隐藏起来,这种机制称为_____封装______。
4. 复杂对象可以由简单对象构成,这种现象称为_____聚合_____。
5. 如果一个派生类的基类不止一个,则这种继承称为______多继承(或多重继承)______。
6. C++支持两种多态性:____编译_____时的多态性和_____运行______时的多态性。
7.对类中对象成员的初始化是通过在构造函数中给出的_______初始化表_______来实现的。
8. 静态数据成员必须在所有函数的定义体外进行_____初始化_____。
9. 重载运算符时,该运算符的_____优先级_____、结合性以及操作符的个数不允许改变。
10. 除了_____赋值_____运算符外,其他重载的运算符都可以被派生类继承。
11. 一个函数的函数体就是一条_____复合____语句。
12.一个函数定义由___函数头_____和____函数体____两部分组成。
13. 在函数模板的参数中,用class修饰的参数称为____虚拟类型(或类型)______参数。
14. 对象将其大部分实现细节隐藏起来,这种机制称为_____封装_____。
15. 基类和派生类的关系称为_____继承_____。
16. 如果一个派生类的基类不止一个,则这种继承称为______多继承(或多重继承)______。
17. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为____单继承______。
18. C++支持两种多态性:_____编译____时的多态性和_____运行_____时的多态性。
19. 静态数据成员必须在所有函数的定义体外进行_____初始化_____。
20. 除了_____赋值_____运算符外,其他重载的运算符都可以被派生类继承。
21.在派生类中实现基类成员的初始化,需要由派生类的构造函数调用___基类的构造函数______________来完成。
22.当建立__类对象时_____,程序自动调用该类的构造函数。
23.定义重载函数时,应在_函数的参数个数、参数类型和返回值_____上有所不同。
24.类是用户定义的类型,具有类类型的变量称作__对象_____。
25.当一个成员函数被调用时,该成员函数的___this指针____指向调用它的对象。
26.拷贝函数通过__构造函数_____使用引用来初始化创建中的对象。
27.如果重载了运算符+,则相应的运算符函数名是operator+________________。
28.在用C++进行程序设计时,最好用_____NEW_____________代替malloc。
29..在单继承和多继承方式中,面向对象的程序设计应尽量使用__单____继承。
30.在C++中,访问一个对象的成员所用的运算符是_____.____,访问一个指针所指向的对象的成员所用的运算符是_____->_____。
三、程序填空题(每空3分,共18分)1. 对数组a[n]按升序进行的选择排序算法void SelectSort(int a[], ___(1)___){int i,j,k;for(i=1;i<n;i++) { //进行n-1次选择和交换k=i-1;for(j=i;j<n;j++)if(a[j]<a[k]) ___(2)___;int x=a[i-1]; a[i-1]=a[k]; ___(3)___;}}(1) int n (2) k=j (3) a[k]=x2.class A {int a,b;public:___(1)___ //定义构造函数,使参数aa和bb的默认值为0,//在函数体中用aa初始化a,用bb初始化b};main() {A *p1, *p2;___(2)___ ; //调用无参构造函数生成由p1指向的动态对象___(3)___ ; //调用带参构造函数生成由p2指向的动态对象,//使a和b成员分别被初始化为4和5}(1) A(int aa=0, int bb=0){a=aa; b=bb;} (2) p1=new A (3) p2= new A(4,5) 3. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。