}
(6)
#include"iostream.h"
intx=5;
intp(intx)
{
inty=1;
staticintz=1;
y++;z++;
returnx+y+z;
}
voidmain()
{
for(inti=1;i<3;i++)
cout<
}
9.25编写一个求n×n方阵主对角元素之和的函数。
并设计一个测试主函数。
说明:
可以使用以前学过的程序开发工具,也可以阅读掌握附录的VisualC++集成开发环境,并用这样的开发环境开发程序。
9.26编写一个求n×n方阵主对角元素之和以及非主对角元素之和的函数。
并设计一个测试主函数。
9.27在自己的计算机上安装VisualC++集成开发环境,阅读附录1的VisualC++集成开发环境,熟悉该集成开发环境的使用方法。
9.28编写一个把有n个元素的数组a中的元素逆置保存到数组b的函数,并设计一个测试主函数进行测试。
9.29阅读附录2的程序调试技术,以习题1.29为例,练习调试程序的基本技术。
9.30编写一个把有n个元素的数组a中的元素就地逆置的函数,所谓就地逆置就是逆置后的元素还保存在数组a中。
并设计一个测试主函数进行测试。
习题2
基本概念题:
9.31填空题:
(1)以面向对象方法构造的系统,其基本单位是__________。
(2)每个对象都是所属类的一个__________。
(3)对象将其大部分实现细节隐藏起来,这种机制称为__________。
(4)对象是对问题域中客观事物的________,它是一组属性和在这些属性上操作的________。
(5)特殊类的对象拥有其一般类的全部属性与操作,称特殊类________了一般类。
(6)面向对象软件开发的生命周期分为三个阶段,即分析、________和________。
9.32选择题:
(1)关于消息,下列说法中不正确的是()。
A.发送消息的对象请求服务,接受消息的对象提供服务
B.消息的发送者必须了解消息的接收者如何相应消息
C.在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用
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.兼容性D.正确性
(7)软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()。
A.可维护性B.可复用性C.兼容性D.正确性
(8)关于面向对象系统分析,下列说法中不正确的是()。
A.术语“面向对象分析”可以用缩写OOA表示
B.面向对象分析阶段对问题域的描述比实现阶段更详细
C.面向对象分析包括问题域分析和应用分析两个步骤
D.面向对象分析需要识别对象的内部和外部特征
9.33简述面向过程程序设计的基本思想。
9.34简述面向过程软件开发方法的主要问题。
9.35简述例2.1的C语言面向过程程序和C++语言面向对象程序的不同。
9.36什么叫类?
什么叫类的实例?
类和类的实例的关系是怎样的?
9.37什么叫消息?
什么叫事件?
9.38解释面向对象的抽象性、封装性、继承性和多态性。
9.39多态性有几种?
各自的定义是什么?
9.40什么叫整体——部分模式?
什么叫一般——特殊模式?
9.41叙述子类对父类中方法的继承中,完全继承、扩充继承和覆盖继承三种不同的设计方法各有什么意义?
9.42面向对象分析阶段要完成怎样的工作?
9.43面向对象设计阶段要完成怎样的工作?
9.44面向对象实现阶段要完成怎样的工作?
9.45简述面向对象程序设计的优点。
复杂概念题:
9.46分析复数在实际应用中的应用情况,用面向对象方法分析复数。
要求画出复数的对象模型图,即画出复数类的类名、属性和行为。
9.47学习过数据结构课程的学生已经熟悉堆栈的概念,用面向对象方法分析一个堆栈。
要求画出堆栈的对象模型图,即画出堆栈类的类名、属性和行为。
9.48学习过数据结构课程的学生已经熟悉队列的概念,用面向对象方法分析一个队列。
要求画出队列的对象模型图,即画出队列类的类名、属性和行为。
9.49调查学校图书馆的管理和使用方法,用面向对象方法分析一个简单的图书管理系统。
要求画出图书管理系统的对象模型图,即画出所有的类(包括类名、属性和行为)以及类之间的联系方式。
9.50调查学校教务处的管理和学生学籍查询方法,用面向对象方法分析一个简单的教务管理系统。
要求画出教务管理系统的对象模型图,即画出所有的类(包括类名、属性和行为)以及类之间的联系方式。
程序设计题:
9.51在例2.1的基础上,分别设计完成实现复数乘除功能的C语言程序和C++语言面向对象程序。
并要求完成复数(1,1)和复数(2,2)的乘除运算并输出运算结果。
习题3
基本概念题:
9.52填空题:
(1)类定义中,既包含成员变量,也包含________。
(2)类中成员变量的访问属性通常定义为________。
(3)类中的供外部调用定义的成员函数,其访问属性通常被定义为________。
(4)对于类中定义的任何成员,其隐含访问权限为________。
(5)对于结构体中定义的任何成员,其隐含访问权限为________。
(6)若在类的定义体中给出了一个成员函数的完整定义,则该成员函数属于________函数。
(7)若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。
(8)若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。
(9)把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的____________。
(10)假定AA是一个类,“AA*abc();”是该类中一个成员函数的原型,则在类外定义时的函数头为__________________。
(11)成员函数的所有参数在类的作用域中,成员函数的返回值________类作用域。
(12)若只需要通过一个成员函数读取成员变量的值,而不需要修改它,则应在函数头的后面加上________关键字。
(13)一个类的__________函数实现对该类对象的初始化功能。
(14)一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。
(15)创建类的动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化。
(16)在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块__________。
(17)假定AB类中只包含一个整型成员变量a,并且它是一个常量成员,若利用参数aa对其进行初始化,则该类的构造函数的定义为____________________。
(18)假定指针p指向一个动态分配的类对象,则当执行“deletep;”语句时,在释放p所指向的动态存储空间之前将自动调用该类的____________。
(19)假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数"AB(){}"。
(20)假定用户为类AB定义了一个构造函数“AB(intaa,char*bb=NULL):
a(aa),b(bb){}”,则该类中至少包含有__________个成员变量。
(21)假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}”,该构造函数实现对成员变量_________的初始化。
(22)假定用户为类AB定义了一个构造函数“AB(intaa=0):
a(aa){}”,则创建该类的对象时,可以有________种不同的格式。
(23)假定用户只为类AB定义了一个构造函数“AB(intaa,intbb=0){a=aa;b=bb;}”,则创建该类的对象时,其实参表中至多带有_________个实参。
(24)假定用户只为类AB定义了一个构造函数“AB(intaa,intbb=0){a=aa;b=bb;}”,则创建该类的对象时,其实参表中至少带有_________个实参。
(25)假定用户为类AB定义了一个构造函数“AB(intaa=0,intbb=0){a=aa;b=bb;}”,则创建该类的对象时,可以有________种不同的格式。
(26)假定用户只为类AB定义了一个构造函数“AB():
a(0),b(0){}”,则创建该类对象x的语句“ABx();”是_________(正确/错误)的。
(27)假定用户只为类AB定义了一个构造函数“AB():
a(0),b(0){}”,则创建该类对象x的语句“ABx;”是_________(正确/错误)的。
(28)假定用户只为类AB定义了一个构造函数“AB():
a(0),b(0){}”,则创建该类对象x的语句“ABx(5);”是_________(正确/错误)的。
(29)假定AB为一个类,则该类的拷贝构造函数的函数头为_____________。
(30)假定AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在该类的析构函数中应该包含有一条______________语句。
(31)静态成员函数____访问类的静态成员变量,____访问类的非静态成员变量。
(32)静态成员变量必须在所有函数的定义体外进行__________。
9.53选择题:
(1)在类作用域中能够通过直接使用该类的()成员名进行访问。
A.私有B.公有C.保护D.任何
(2)在关键字public后面定义的成员为类的()成员。
A.私有B.公有C.保护D.任何
(3)在关键字private后面定义的成员为类的()成员。
A.私有B.公有C.保护D.任何
(4)假定AA为一个类,a为该类公有的成员变量,x为该类的一个对象,则访问x对象中成员变量a的格式为()。
A.x(a)B.x[a]C.x->aD.x.a
(5)假定AA为一个类,a()为该类公有的成员函数,x为该类的一个对象,则访问x对象中成员函数a()的格式为()。
A.x.aB.x.a()C.x->aD.x->a()
(6)假定AA为一个类,a为该类公有的成员变量,px为指向该类对象的一个指针,则访问px所指对象中成员变量a的格式为()。
A.px(a)B.px[a]C.px->aD.px.a
(7)假定AA为一个类,a为该类私有的成员变量,GetValue()为该类公有成员函数,它返回a的值,x为该类的一个对象,则访问x对象中成员变量a的格式为()。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()
(8)假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A.intAA:
:
a()B.intAA:
a()
C.AA:
:
a()D.AA:
:
inta()
(9)假定AA为一个类,a为该类公有的成员变量,若要在该类的一个成员函数中访问它,则书写格式为()。
A.aB.AA:
:
aC.a()D.AA:
:
a()
(10)假定AA是一个类,“AA*abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值()。
A.已经被改变B.可能被改变
C.不变D.受到函数