面向对象与C++_复习题

合集下载

《面向对象程序设计c》综合复习题集及答案详解

《面向对象程序设计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的值为()。

面向对象复习题

面向对象复习题

第一部分面向对象方法概述一、填空题1.对象的抽象是,类的实例是。

2.动态模型描述了系统的结构。

3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流,有、和三种外部事件控制流。

控制流是一个处理内部的控制,均可结构化。

4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。

5.继承性是自动共享父类属性和的机制。

6.对象具有封装性,实现了的组合。

7.在面向对象方法中,信息隐藏通过对象的来实现。

类结构分离了和,从而支持了信息隐藏。

8.抽象是指强调实体的、,忽略一些无关紧要的属性。

类实现了对象的和的抽象,它是对象的共性的抽象。

9.子类只继承的属性和操作,称为单重继承。

10.对象的抽象是,类的具体化就是,也可以说类的实例是。

11.类具有,它是的行动的抽象。

12.对象具有状态,对象用来描述它的状态。

13.概念模型描述了系统的。

功能模型指出,动态模型确定,而对象模型确定。

功能模型由组成。

14.面向对象有三个基本要素,它们是、、。

15.面向对象技术在三个级别上促进了共享,它们是、、。

16.活动是一种有时间间隔的操作,它是依附于。

动作是一种瞬时操作,它是与了解在一起的操作。

17.封装性是指所有软件部件内部都有明确的以及清楚的。

每个软件部件都有友好的,软件部件的与分离。

18.主要的对象类型有、、和。

19.同一个类中的共享是指同一个类中的对象有着相同的和相同的。

20.结构化方法的本质是,其、可修改性和可重用性都比较差。

21.对象还有,用于改变对象的状态。

对象实现了和的结合。

22.面向对象方法认为系统是由应用域的组成。

23.对象具有状态,描述对象的状态用它的。

24.类具有属性,描述类的属性用。

25.一个方法有、和。

26.动态模型描述了系统的。

27.对象模型的主要元素是类,关联和。

28.通过这种机制和构造来实现不同应用中的信息共享。

29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。

c 面向对象程序设计语言重点难点复习题及答案

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面向对象期末复习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#面向对象程序设计期末复习题

面向对象程序设计测试题一、单选题1、改变窗体的标题,需修改窗体的什么属性( A )A)Text B)Name C)Title D)Index2、打开代码编辑器的功能键是( C )A)F1 B)F5 C)F7 D)F123、加载窗体时触发的事件是( B )A)Click B)Load C)Gotfocus D)DoubleClick4、设置计时器时间间隔的属性是( C )A)Enabled B)Name C)Interval D)Modifiers5、数据类型为Long的数据在内存中占用几个字节数( D )A) 2 B) 4 C) 4 D) 86、如果要使文本框能够多行显示,则应使什么属性设为True。

( A )A) MultiLine B) MaxLength C) SelLength D) Locked7、图片框控件可显示图像,若想使图片框自动改变大小,以适应装入的图片,应修改SizeMode 属性值为( B )A) Normal B) AutoSize C) StretchImage D) CenterImage8、要使文本框成为密码输入框,一般应修改文本框的什么属性( C )A)PasswordChar属性和MaxLength属性,并且 MultiLine属性值只能为False。

B)PasswordChar属性和MaxLength属性,并且Lines属性值只能为False。

C)只修改PasswordChar属性值就可以了,其他属性可以不修改。

D)PasswordChar属性和MaxLength属性, MultiLine属性值可以为True。

10、以下四组属性中,决定对象的大小的一组属性为:( A )A)width, height B)left, top C)forecolor,backcolor D)right,buttom11、下面哪个控件在程序运行时是不可见的( c )A)单选钮 B)组合框 C)组件 D)框架12、有两个数组s1和s2,要将s1的内容“拷贝”一份给s2,应使用( B )A)s2=s1 B)s2=string.copy(s1) C)s2=s1.Clone D)s2=s1.All13、下面哪种不是循环结构( A )A)Try…Catch…Finally B)For…NextC)For Each…Next D)Do…Loop14、用于专门输入日期时间型数据的控件是(B )A)Timer B)DateTimePicker C)ListBox D)TextBox15、要以表格形式显示数据表,可以使用以下什么控件(B )A)ListBox B)DataGridView C)DataSet D)TextBox16、C#项目文件的扩展名是( B )A) .sln B) .csproj C) .proj D).cs17、C#中,用什么属性标识不同的对象( B )A)Text B)Name C)Title D)Index18、菜单项标题中含有带下划线的字符,这是( B )A)快捷键 B)访问键 C)选取标记 D)菜单禁用19、可以通过改变什么属性,改变复选框的状态( C )A)value B)checked C)style D)appearance20、在C#中,用什么对象来创建弹出式菜单( B )A)Menu B)contextMenustrip C)Menustrip D)Mainmenu21、SQL语句分为三类,分别是:( C )A) create delete modify B) select update editC) DDL DML DCL D) create alter drop22、下面哪种语言不是面向对象程序设计语言( D )A) JAVA B) C# C) D) PHP23、对象的三个基本要素,它们是( B )A)对象的名称、值和所属类 B)对象的属性、事件和方法C)对象的大小、存储方式和内容 D)对象的访问方法、存储方式和名称24、在使用OpenfileDialog对话框控件时,希望通过对话框查找到 (*.txt) 类型的文件和所有文件(*. *),则该控件的filter属性应该如何设置( B )A)文本文件 (*.txt): *.txt; 所有文件 (*. *): *. *B)文本文件 (*.txt)|*.txt|所有文件 (*. *)|*. *C)文本文件 (*.txt)\*.txt\所有文件 (*. *)\*. *D)文本文件 (*.txt)->*.txt; 所有文件 (*. *)->*. *25、要创建多文档应用程序,需要将父窗体的什么属性设置为true ( D )A) DrawGrid B) ShowInTaskbar C) Parent D) IsMdiContainer26、下列不属于容器类控件的是( d )A)Panel控件 B)GroupBox控件 C)TabControl控件 D)listBox控件27、下列对象模型中,用于生成并执行SQL语句的对象是( B )A)Connection对象 B)Command对象 C)DataSet对象 D)DataReader对象28、使用DataSet 类定义数据集对象,应在代码开始处添加对什么命名空间引用。

C面向对象程序设计重点复习

C面向对象程序设计重点复习

C面向对象程序设计重点复习面向对象程序设一、单项选择题1. 下面关于对象概念的描述中, _______ 错误的 A. 对象代表着正在创建的系统中的一个实体的结构体变量C. 对象是一个状态和操作(或方法)的封装体是通过消息进行的2. 继承机制的作用是:A .信息隐藏B .数据封装3. 有关析构函数的说法不正确的是 A. 析构函数有且只有一个构函数没有形参D. 析构函数不能是虚函数 4. 友元的作用之一是 ___________A. 提咼程序的运行效率 C. 实现数据的隐藏性 5. 通常拷贝构造函数的参数是—A.某个对象名B.某个对象的成员名D. 某个对象的指针名6. 如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是 _______ 。

(C)A.virtual show()=0 ; C.virtual void show()=0 ; 7. 下面关于友兀的描述中,错误的是A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友兀可以提咼程序的运行效率D. 类与类之间的友元关系可以继承计复习题(B )B.对象就是C 语言中D.对象之间的信息传递疋:(C)c .定义新类________ (D)B.析构函数无任何函数类型D ?数据抽象C.析(A) B.加强类的封装性D.增加成员函数的种类 ___。

(C)C.某个对象的引用名B.virtual void show() ;D.void show=0 virtual ; _______ 。

(D)8. 在C++中, _________ 算符不能重载A. +B. ? :C.-9. 下列关于运算符重载的描述中,___A.运算符重载可以改变操作数的个数先级C.运算符重载可以改变结合性结构(B)D.<=是正确的。

(D)B.运算符重载可以改变优D.运算符重载不可以改变语法10. 在下列函数原型中,可以作为类AA 构造函数的是____________ (D) A .void AA(int) ; B . int AA( ) ; C .AA(int)const;D . AA(int);11. 在声明类时,下面的说法正确的是 _________ 。

c面向对象程序设计考试试题

c面向对象程序设计考试试题

c面向对象程序设计考试试题一、选择题(每题2分,共20分)1. 面向对象程序设计中,以下哪一个不是基本特征?A. 封装B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. functionC. structD. type3. 以下哪个是Java中不允许的类名?A. MyClassB. 1MyClassC. MyClass1D. MyClass$4. 在Java中,以下哪个是正确的构造方法声明?A. void MyClass() {}B. int MyClass() {}C. MyClass MyClass() {}D. MyClass() {}5. 以下哪个关键字用于实现类的继承?A. extendsB. implementsC. overrideD. abstract6. 以下哪个关键字用于声明接口?A. classB. interfaceC. abstractD. enum7. 在Java中,以下哪个关键字用于实现多态?A. newB. superC. overrideD. implements8. 在Java中,以下哪个关键字用于定义包?A. packageB. importC. classD. interface9. 以下哪个是Java中的访问控制修饰符?A. publicB. staticC. finalD. void10. 在Java中,以下哪个是正确的方法重载声明?A. void display(int a, int b)B. int display(int a, int b)C. void display(int a, int b) {}D. void display(int a, int b) { return a + b; }二、简答题(每题10分,共30分)1. 简述面向对象程序设计中的封装、继承和多态三个基本特征。

2. 解释Java中的接口和抽象类的区别。

c面向对象深刻复知识题目解析版

c面向对象深刻复知识题目解析版

一、填空题1.C++中有两种数据类型:( char)和( int long )可以使用signed修饰符。

在C++中,用数组、指针、和( 引用)作为函数参数,能够将参数值带回。

2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。

3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承)、( 多态)。

4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 把对象的每个数据成员的值都复制到新建立的对象中)。

5.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类的)构造函数,否则应用程序会产生一个编译错误。

6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享)。

7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同)。

8.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装)特性。

9.预编译指令由三种,它们是:文件包含、( 宏定义)和( 条件编译)。

10.静态的成员函数没有隐含的( this),所以,它们只能直接访问类的静态的数据成员。

11.在C++中,函数的参数有两种传递方式,它们是值传递和( 地址)。

12.当非静态成员函数被调用时,该成员函数的( this)指向调用它的对象。

13.拷贝构造函数使用( 引用)作为参数初始化创建中的对象。

14.在公有继承的情况下,基类数据成员在派生类中的访问权限( 不变)。

15.在C++中,构造派生类对象时,总是先从( 基类)的初始化开始的。

16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。

17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为(虚基类)。

18.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为( 抽象类),定义该类至少具有一个( 纯虚函数)。

《面向对象程序设计C--》期末试卷及答案

《面向对象程序设计C--》期末试卷及答案

一、选择填空题(共20小题,每小题2分,共40分)。

1. 关于C++与C语言关系的描述中,(d)是错误的。

a.C语言是C++语言的一个子集b.C语言与C++语言是兼容的c.C++语言对C语言进行了一些改进d.C++语言和C语言都是面向对象的2.按照标识符的要求,(a )符号不能组成标识符。

a.连接符b.下划线c.大小写字母d.数字字符3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与(c)组成配对关系。

a.缩排位置相同的ifb.在其之前未配对的ifc.在其之前未配对的最近的ifd.同一行上的if4. 在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(c)。

a.1b.0c.6d.25. 设"char **s;",以下正确的表达式是(b)。

a.s="computer";b.*s="computer";c.**s="computer";d.*s='c';6. 对于"int *pa[5];"的描述中,(d )是正确的。

a.pa是一个指向数组的指针,所指向的数组是5个int型元素b.pa是一个指向某数组中第5个元素的指针,该元素是int型变量c.pa [5]表示某个元素的第5个元素的值d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针7. 在下列表示引用的方法中,(a )是正确的。

已知:int m=10;a.int &x=m;b.int &y=10;c.int &z;d.float &t=&m;8. 下列for循环的次数为(b)。

for(i=0, x=0; !x&&i<=5; i++)a.5b.6c.1d.无限9. 对于C/C++语言的函数,下列叙述中正确的是(a)。

C面向对象程序设计试卷.doc

C面向对象程序设计试卷.doc

一、单项选择题(出题人:刘敏,尹仁青)1.关键字—c_—说明对象或变量初始化后不会被修改。

A.s taticB. public C・const D. inline2.如果调用带有默认参数的函数时缺少一个参数,则—参数就作为这一个参数。

A.笫一个B•最后一个C•中间一个D•以上都不是3.静态数据成员的生存期_A—oA.与整个程序相同B.不长与类的生存期C.取决于创建的对象数D.以上都不是4•设置虚基类的目的是: B OA.简化程序B.消除二义性C.提高运算效率D.减少目标代码5.下列语句中,将函数int sum(int x, int y)正确重载的是___ C ____A.fl oat sum(int x, int, y)B.int sum(int a, int b)C.f 1 oat sum(float x, float y)D.double sum(int y, int x)6•已知X类,则当程序执行到语^1: X array [3];时,调用了—D—次构造函数。

A.0B. 1C. 2D. 37•如果表达式++i*k中的“++”和都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为BA.operator * (i. operator++ (), k)B.operator*(i・ oper3tor++(i), k)C・ i・ opcrator++()・ operator*(k)D.k.opreator*(operator++(i))8•下面对模板的声明,正确的是—C—A.temlate<T>B.template<class Tl, T2>C・ tcmplatc<class Tl,class T2>D. template<class T1;class T2>9.考虑下面的函数原型声明:void testDefaulParam (int a, int b=7, char z二'*');下面函数调用中,不合法的是____ C ____A.testDefaulParam(5)B.testDefaulParam(5, 8)C.testDefaulParam(5, ' #')D.testDefaulParam(0, 0, ? *')10.类定义的内容允许被其他对象无限制的存取的是—C _______A.private 部分B.protected 部分C.public 部分D.以上都不对11・_B_不是属于面向程序设计的特性A.抽象性B.数据相关性C.多态性D.继承性12•将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的 DA.类B.虚函数C.运算符重载D.模板13.C++与C语言最根本的不同之处在于—A_A.使用了类B.能够实现变量自动初始化C.支持软件重用D.支持接口重用14.动态内存分配的主要目的是A・使程序按动态链编方式运行 B.正确合理的使用内存C.提高程序的运行速度D.提高程序的可维护性15.在C++函数的形参前加const关键字,是为了提高函数的_C—A.数据封装性B.可理解性C.可维护性D.可重用性16•函数重载的目的是B_A.实现共享B.使用方便,提高可读性C.提高速度D.减少空间17•从程序片段:char name[] = ” C++” ; course (name);可判断函数course的调用采用的是—D_A.传值调用B.带缺省参数值的函数调用C.引用调用D.传址调用18.用来说明类中公有成员的关键字是_A_A.publicB. privateC.protectedD.friend 19•如果一个类的成员函数print ()不修改类的数据成员值,则应将其声明为AA. v oid pri nt() con st;B. const void print ()C. void const print ()D. void print (const)20•在程序代码:A::A(int a, int *b) {this->x=a; this -〉y 二b;} 中,this 的类型是_C_A. intB. int *C. AD. A *二、程序改错(出题人:张晨)#inelude <iostrcam> using namespace std;void swap(int &a, (1) int 6){ int t; t=a; a=b; b 二t;}void max (int a, int b, (2)int t, (3)int maxnum,int &minnum)if ((4) a<=t) if ((5)a<=t)) if (b 〈二 c) (7) maxnum=b ;Iint main()int a, b, c, maxnum, minnum; swap (a, b);swap (a, c);(6) swap (b, t)mirm um 二c;cout<<〃input a, b,c:〃;cin>>a>>b>>c;(8)min (a, b, c, maxnum, minnum);cout<<z'(9)a= <<maxnuHi〈〈endl;cout<<z,(7zZ?c-,,<<minnum<<cndl;return 0;答案:(Dint&b (2)int c(3)int &maxnum(4) (a<=b) (5) (a〈二c)(6) swap (b, c)(7)maxnum=a(8)max(9)maxnum(10)minnum三、阅读下面程序,写出其结果。

C面向对象程序设计重点复习资料.doc

C面向对象程序设计重点复习资料.doc

面向对象程序设计复习题一、单项选择题D •析构函数不能是虚函数4.友元的作用之一是7.下面关于友元的描述中,错误的是 __________ 。

(D)A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元对以提高程序的运行效率D. 类与类之间的友元关系可以继承&在C++中, ________ 运算符不能重载。

(B)C •一 9. _________________________________ 下列关于运算符重载的描述中, 是正确的。

(D)A.运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构 10. 在下列函数原型中,可以作为类AA 构造函数的是 __________ (D)A. void AA(int);B. int AA();C. AA(int)const;D. AA(int);11. 在声明类时,下面的说法正确的是 ________ 。

(0A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是registerC. private, public, protected 可以按任意顺序出现D. 没有用private, public, protected 定义的数据成员是公有成员1•下面关于对象概念的描述中, 是错误的。

(B)A.对象代表着正在创建的系统中的一个实体B.对象就是C 语言中的结构体变量C.对彖是一个状态和操作(或方法)的封装体 2.继承机制的作用是: ___________ © A.信息隐藏 B.数据封装D.对彖之间的信息传递是通过消息进行的C. 定义新类D.数据抽象 3.有关析构曲数的说法不正确的是 (D)A •析构函数有且只有一个B •析构凶数无任何两数类型C •析构曲数没有形参 A.提高程序的运行效率加强类的封装性 C.实现数据的隐藏性D.增加成员函数的种类 5•通常拷贝构造曲数的参数是o (0 A ・某个对彖名 B.某个对彖的成员名 C.某个对彖的引用名 【)•某个对彖的指针名6•如果在基类中将show 声明为不带返冋值的纯虚函数,正确的写法是o (0 A. virtual show()=0;B. virtual void show();C. virtual void show()=0:D. v oid showO virtual ; 【)・<=12. _______________ 继承具有,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

c面向对象程序设计考试试题

c面向对象程序设计考试试题

c面向对象程序设计考试试题一、单项选择题(每题2分,共20分)1. 在面向对象编程中,封装的主要目的是:A. 提高代码的可读性B. 隐藏对象的内部状态和实现细节C. 增加对象的可访问性D. 减少对象的内存占用2. 下列关于继承的描述,错误的是:A. 继承可以提高代码的复用性B. 继承可以实现多态性C. 继承是一种“强耦合”关系D. 继承可以实现代码的扩展和修改3. 在Java中,一个类可以继承几个其他类:A. 只能继承一个类B. 可以继承多个类C. 可以继承任意数量的类D. 不能继承任何类4. 下列哪个关键字在C++中用于定义抽象类:A. classB. abstractC. virtualD. interface5. 在面向对象编程中,多态性的主要优点是:A. 减少程序的复杂性B. 提高程序的运行效率C. 增加程序的内存消耗D. 减少程序的可读性6. 在Java中,下列哪个修饰符可以将一个方法的访问级别限制为仅在定义它的包内可见:A. privateB. default(即无修饰符)C. protectedD. public7. 下列关于接口的描述,正确的是:A. 接口可以包含具体实现的方法B. 接口中的方法默认都是public的C. 一个类可以实现多个接口D. 一个接口可以继承另一个接口8. 在C++中,下列哪个特性可以用来实现运行时多态:A. 函数重载B. 虚函数C. 模板D. 宏定义9. 下列哪个不是面向对象编程的基本特征:A. 封装B. 继承C. 多态D. 过程化10. 在设计类的时候,下列哪个原则提倡应该追求尽可能高的内聚和尽可能低的耦合:A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 高内聚低耦合原则二、简答题(每题10分,共30分)1. 请简述面向对象编程中的“组合”和“聚合”的区别,并给出各自的应用场景。

2. 解释什么是设计模式,并至少列举三种常见的设计模式及其主要特点。

c面向对象期末考试试题

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代码示例,展示如何实现多态性。

面向对象及C_复习题

面向对象及C_复习题

《面向对象与C++》复习题一、简答题1、简述解释方式与编译方式。

答:编译就是先有目标代码再执行;解释就是一边翻译一边执行。

解释方式是边扫描源程序、边进行翻译,然后执行。

即解释一句、执行一句,不生成目标程序。

这种方式运行速度慢,但在执行中可以进行人机对话,随时改正源程序中的错误。

编译方式是将源程序全部翻译后,生成一个等价的目标程序,对目标程序再进行连接装配后,便得到“执行程序”,最后运行执行程序。

由于源程序一旦编译后不再参与运行,以后每次直接运行执行程序即可,所以运行速度快。

但这种方式不够灵活,每次修改源程序后,哪怕只是一个符号,也必须重新编译、连接;2、简述面向过程的程序设计与面向对象的程序设计。

面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。

通过这些概念面向对象的思想得到了具体的体现。

结构化程序设计又称为面向过程的程序设计。

在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。

其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。

3、什么是拷贝构造函数。

是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。

其唯一的参数(对象的引用)是不可变的(const类型)。

此函数经常用在函数调用时用户定义类型的值传递及返回。

拷贝构造函数要调用基类的拷贝构造函数和成员函数。

如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。

4、重写与重载的区别。

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。

子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

面向对象程序设计c期末复习题

面向对象程序设计c期末复习题

《面向对象程序设计》期末复习题一、单选题1.能作为程序的基本单位是( c )。

A. 字符B. 语句C. 函数D. 源程序文件2.存储以下数据,占用存储字节最多的是(d)。

A. 0B. ‘0’C. “0”D. 0.03.设” 1526;”,则”<<();”的输出结果是( d )。

A. 15B. 26,15C. 15,26D. 264.下列的符号常量定义中,错误的定义是(c)。

A. 10;B. 20;C. ;D. ;5.函数重载是指(a)。

A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同6.以下关于函数模板叙述正确的是(c)。

A. 函数模板也是一个具体类型的函数B. 函数模板的类型参数与函数的参数是同一个概念C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数D. 用函数模板定义的函数没有类型7. 42. 下列( c )的调用方式是引用调用。

A. 形参和实参都是变量B.形参是指针,实参是地址值C. 形参是引用,实参是变量D.形参是变量,实参是地址值8. 43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( a )。

A. 内联函数B.重载函数C.递归函数D.函数模板9. 56. 采用重载函数的目的是( d )。

A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性10. 58. 以下叙述中正确的是( b )。

A. 使用可以为常量定义一个名字,该名字在程序中可以再赋另外的值B. 使用定义的常量名有类型之分,其值在程序运行时是不可改变的C. 在程序中使用内联函数使程序的可读性变差D. 在定义函数时可以在形参表的任何位置给出缺省形参值11. 70. 用运算符创建一个含10个元素的一维整型数组的正确语句是( c )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象与C++》复习题一、简答题1、简述解释方式与编译方式。

答:编译就是先有目标代码再执行;解释就是一边翻译一边执行。

解释方式是边扫描源程序、边进行翻译,然后执行。

即解释一句、执行一句,不生成目标程序。

这种方式运行速度慢,但在执行中可以进行人机对话,随时改正源程序中的错误。

编译方式是将源程序全部翻译后,生成一个等价的目标程序,对目标程序再进行连接装配后,便得到“执行程序”,最后运行执行程序。

由于源程序一旦编译后不再参与运行,以后每次直接运行执行程序即可,所以运行速度快。

但这种方式不够灵活,每次修改源程序后,哪怕只是一个符号,也必须重新编译、连接;2、简述面向过程的程序设计与面向对象的程序设计。

面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。

通过这些概念面向对象的思想得到了具体的体现。

结构化程序设计又称为面向过程的程序设计。

在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。

其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。

3、什么是拷贝构造函数。

是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。

其唯一的参数(对象的引用)是不可变的(const类型)。

此函数经常用在函数调用时用户定义类型的值传递及返回。

拷贝构造函数要调用基类的拷贝构造函数和成员函数。

如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。

4、重写与重载的区别。

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。

子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值的类型。

5、动态绑定与静态绑定。

静态绑定:在面向过程的中又称为前期绑定在程序编译时进行了绑定,即在还没运行时,就已经加载到内存。

3.动态绑定:在面向过程中称为后期绑定(运行时绑定)在运行时就进行绑定,根据实际情况有选择的进行绑定。

6、传值、传指针与传引用的优缺点。

答:传值安全低效,传指针与传引用高效不安全,如果加上CONST就安全了。

7、将函数声明为常成员函数的作用。

不可修改成员,即对声明为const 的成员作改动就会报错,容易发现问题8、构造新类时,使用组合与继承的原则是什么。

答:构造新类时,例如A是基类,B是A的派生类,继承的原则如下:1.如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性,2.若在逻辑上B是A的“一种”,则允许B继承A的功能和属性。

组合的原则如下:1.若在逻辑上B是A的“一部分”,则不允许B从A的派生,而是要A与其它东西组合出B。

9、内联函数的作用。

答:内联函数就是指在每个使用它的地方插入全部算法,而不是把函数地址传过去,它是编译在堆内存里的,直到程序结束后它才失效,这样能加快执行的速度,效率更高,但是内联函数一定要是短小的,否则只能起到反作用.10、抽象类。

答:用 abstract 修饰的类是抽象类。

在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象。

凡是包含纯虚函数的类都是抽象类。

它与非抽象类的不同:1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。

2、允许(但不要求)抽象类包含抽象成员。

3、抽象类不能被密封。

二、选择题1、编译程序的功能是(c )A)将汇编语言程序转换为目标程序B)将汇编语言程序转换为高级语言程序C)将高级语言程序转换为目标程序D)将高级语言程序转换为汇编语言程序2、在C++语言中,对函数参数默认值描述正确的是(d )A)函数参数的默认值只能设定一个B)一个函数的参数若有多个,则参数默认值的设定可以不连续C)函数参数必须设定默认值D)在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值3、考虑函数原型void test(int a, int b=7, float f=6.0),下面的函数调用中,属于不合法调用的是:( c )A)test(5); B)test(5,8); C)test(6 ,3.2) D)test(0,1,1.2);4、下面有关重载函数的说法中正确的是(c )A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;C)重载函数必须是参数个数不同或类型不同;D)重载函数名可以不同;5、能作为函数重载判断依据的是:( a )A.参数个数B。

参数顺序C。

函数名字D。

返回类型6、下列关于构造函数的描述中,错误的是(d )A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C)构造函数可以是内联函数;D)构造函数不可以重载7、关于析构函数的描述中,错误的是(c )A)析构函数不能带参数B) 析构函数在撤销对象时自动执行C)析构函数名与类名相同;D) 析构函数不可以重载8、下面描述中,表达错误的是(b )A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承是基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中是private的9、应在下列程序划线处填入的正确语句是(c )A)fun(); B)Base.fun(); C)Base::fun(); D) Base->fun();10、一个C++类( c )A)只能有一个构造函数和一个析构函数B)可以有一个构造函数和多个析构函数C)可以有多个构造函数和一个析构函数D)可以有多个构造函数和多个析构函数11、以下程序中,while循环的循环次数是(d )A)1 B)10 C) 6 D)死循环,不能确定次数12、关于内联函数,以下说法错误的是(c )A)使用内联嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度.B)内联函数必须在调用之前定义.C)内联函数中可以存在循环结构.D)内联函数必须是短小的.13、引入友元的主要目的是为了( c )A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性14、假定AB为一个类,则执行AB x;语句时将自动调用该类的(b )A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数15、一个const对象( b )。

A. 能访问所有成员函数B. 只能访问const成员函数C. 也能访问volatile成员函数D. 能访问const和volatile成员函数三、填空题1、C++源程序文件扩展名为_____.cpp________2、面向对象的特征是封装、继承和多态。

3、采用malloc函数申请的内存,采用free 释放;new操作符申请的内存,采用delete 释放。

4、在C++中,函数的参数传递的方式有传值、传指针和传引用。

5、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员____,共同行为被描述为类中的_成员函数____。

6、对类中的成员函数和属性的访问是通过__public__、__proected___和_private___这3个关键字来控制的。

7、用关键字public 控制的成员是类的接口。

8、在定义类的对象时,C++程序将自动调用该对象的___构造___函数初始化对象自身。

9、在撤销类的对象时,C++程序将自动调用该对象的__析构____函数。

10、非成员函数应声明为类的___友员_____才能访问这个类的private和protected成员。

11、补充完整以下程序,使其输出10。

class MyClass{public:获取xprivate: int x;};void main(){ MyClass my(10);cout << my.getNum() << endl;12、class test{private: int num; float f;public: test(int n,float f); test(test&);};test::test(int n,float f){ num=n;f=t.f;}四、读程序,找错误,并说明原因。

1、class A {public: static void f(A a);private: int x;};void A::f(A a) {cout << x; //错误,x的地方是非静态的,静态的成员只能操作静态的成员cout << a.x;}2、class A {protected:int x;};int main() {A a;a.x = 5; //错误,x是保护成员,对外不可访问3、class A{public: void A(int i=0){m=i;} 错,构造函数不能返回值。

void show(){cout<<m;}void ~A(){ } 错,构造函数不能返回值private: int m;};void main(){ A a(5);a.m+=10; 错,构造函数不能返回值a.show();五、读程序,写结果。

1、//n=102、//i=0 k=2 m=43、// i=10 d=15.64、Point构造函数Cirlce构造函数Circle析构函数Point析构函数5、base写2次,写1次。

(base::fun base::fun devide::fun)六、编程题1、编写程序,输出100以内的能被3和7同时整除的所有整数。

#include <iostream.h>void main(){ int i;for(i=1;i<=100;i++)if(i%3==0&&i%7==0)cout<<i<<endl;}2、编写一个矩形类,要求可以提示用户输入矩形的长度和宽度,并显示该矩形的长度、宽度和面积。

#include <iostream.h>class rectange{private:int len;int wid;public:rectange(int a,int b):len(a),wid(b){ }int getLen(){return len;}int getwid(){return wid;}friend int area(rectange T);};int area(rectange T){ int s;s=T.len*T.wid;return s;}int fun(rectange T){ int l;l=(T.getLen()+T.getwid())*2;return l;}int main(){rectange a(5,7);cout<<"\nT对象面积为:"<<area(a);cout<<"\nT对象周长为:"<<fun(a);return 0;}3、下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数。

相关文档
最新文档