西安石油大学大二上C++面向对象程序设计课件各章习题.docx

上传人:b****4 文档编号:27508679 上传时间:2023-07-02 格式:DOCX 页数:59 大小:38.51KB
下载 相关 举报
西安石油大学大二上C++面向对象程序设计课件各章习题.docx_第1页
第1页 / 共59页
西安石油大学大二上C++面向对象程序设计课件各章习题.docx_第2页
第2页 / 共59页
西安石油大学大二上C++面向对象程序设计课件各章习题.docx_第3页
第3页 / 共59页
西安石油大学大二上C++面向对象程序设计课件各章习题.docx_第4页
第4页 / 共59页
西安石油大学大二上C++面向对象程序设计课件各章习题.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

西安石油大学大二上C++面向对象程序设计课件各章习题.docx

《西安石油大学大二上C++面向对象程序设计课件各章习题.docx》由会员分享,可在线阅读,更多相关《西安石油大学大二上C++面向对象程序设计课件各章习题.docx(59页珍藏版)》请在冰豆网上搜索。

西安石油大学大二上C++面向对象程序设计课件各章习题.docx

西安石油大学大二上C++面向对象程序设计课件各章习题

习题1

基本概念题:

9.1填空题:

(1)一个完整的可运行程序中必须有一个名为________的函数。

(2)一条表达式语句必须以________作为结束符。

(3)一个函数定义由________和________两部分组成。

(4)若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的________语句。

(5)C++头文件和源程序文件的扩展名分别为________和________。

(6)程序文件的编译错误分为________和_________两类。

(7)当使用________保留字作为函数类型时,该函数不返回任何值。

(8)当函数参数表用_________保留字表示时,则表示该参数表为空。

(9)从一条函数原型语句“intfun1(void);”可知,该函数的返回类型为________,该函数带有________个参数。

(10)在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是________定义的头文件。

(11)重载一个函数的条件是:

该函数必须在参数的个数或参数的__________上与其它同名函数有所不同。

(12)如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的________部分。

(13)函数形参的作用域是该函数的____________。

(14)当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的_______。

9.2选择题:

(1)以下说法中正确的是()。

A.C++程序总是从第一个定义的函数开始执行

B.C++程序总是从main函数开始执行

C.C++函数必须有返回值,否则不能使用函数

D.C++程序中有调用关系的所有函数必须放在同一个程序文件中

(2)以下叙述中不正确的是()。

A.在一个函数中,可以有多条return语句

B.函数的定义不能嵌套,但函数的调用可以嵌套

C.函数必须有返回值

D.不同的函数中可以使用相同名字的变量

(3)函数重载是指()。

A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同

B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同

C.两个以上的函数名字不同,但形参的个数或类型相同

D.两个以上的函数取相同的函数名,并且函数的返回类型相同

(4)下列()的调用方式是引用调用。

A.形参和实参都是变量B.形参是指针,实参是地址值

C.形参是引用,实参是变量D.形参是变量,实参是地址值

(5)为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。

A.内联函数B.重载函数C.递归函数D.函数模板

(6)C++中函数返回值的类型是由()决定的。

A.return语句中表达式的类型B.该函数定义时的类型

C.调用函数时的调用语句D.系统根据结果

(7)以下函数的返回结果是()。

intfunction(char*x){

char*p=x;while(*p++);return(p-x-1);

}

A.求字符串的长度B.将字符串x连接到字符串p后面

C.将字符串x复制到字符串p中D.将字符串x反向存放

(8)以下正确的函数原型语句是()。

A.doublefun(intx,inty)

B.doublefun(intx;inty)

C.doublefun(int,int);

D.doublefun(intx,y);

(9)以下正确的描述是()。

A.函数的定义可以嵌套,函数的调用不可以嵌套

B.函数的定义不可以嵌套,函数的调用可以嵌套

C.函数的定义和函数的调用均可以嵌套

D.函数的定义和函数的调用均不可以嵌套

(10)若用数组名作为函数调用的实参,传递给形参的是()。

A.数组的首地址B.数组中第一个元素的值

C.数组全部元素的值D.数组元素的个数

(11)以下正确的描述是()。

A.不允许设置参数的默认值

B.设置参数的默认值只能在定义函数时设置

C.设置参数的默认值时,应该设置右边的参数

D.设置参数的默认值时,应该全部参数都设置

(12)采用重载函数的目的是()。

A.实现共享B.减少空间

C.提高速度D.使用方便,提高可读性

(13)当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录

C.仅仅搜索源程序所在目录

D.搜索当前逻辑盘上的所有目录

(14)当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录

C.仅仅搜索源程序所在目录

D.搜索当前逻辑盘上的所有目录

(15)文件包含命令中被包含的文件的扩展名()。

A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp

(16)下列对引用的陈述中不正确的是()。

A.每一个引用都是其所引用对象的别名,因此必须初始化

B.形式上针对引用的操作实际上作用于它所引用的对象

C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行

D.不需要单独为引用分配存储空间

(17)若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。

A.inB.inlineC.inLineD.InLiner

(18)在多文件结构的程序中,通常把类的定义单独存放于()中。

A.主文件B.实现文件C.库文件D.头文件

(19)在多文件结构的程序中,通常把含有main()函数的文件称为()。

A.主文件B.实现文件C.程序文件D.头文件

(20)一个C++程序文件的扩展名为()。

A..hB..cC..cppD..cp

9.3C++/C语言的基本数据类型有哪些?

写出它们各自的关键字。

9.4C++/C语言的基本语句有哪些?

写出它们各自的语法格式。

9.5C++语言的枚举类型和C语言的枚举类型有什么不同?

9.6C++语言的结构体类型和C语言的结构体类型有什么不同?

9.7和C语言变量的定义方法相比,C++语言变量的定义方法有什么改进?

9.8在一个变量的定义前加const关键字有什么作用?

9.9函数怎样体现了程序的模块化设计?

9.10什么叫函数的形参?

什么叫函数的实参?

9.11什么叫输入型参数?

怎样设计函数的输入型参数?

9.12什么叫输出型参数?

怎样设计函数的输出型参数?

9.13怎样把系统库函数和用户自定义函数包含到一个程序中?

9.14什么叫函数原型?

函数原型机制有什么优点?

9.15什么叫内联函数?

怎样定义内联函数?

什么样的函数可以定义成内联函数?

9.16怎样设计带缺省参数的函数?

试举一例说明。

9.17什么叫函数重载?

重载的函数要满足什么条件?

9.18怎样定义引用变量?

引用变量有什么功能?

9.19说明在设计函数时,怎样利用引用变量设计输出型参数?

在调用函数时,怎样设计相应的实际参数?

9.20自定义语句有什么用途?

9.21程序预处理主要完成哪些工作?

9.22如果一个程序中包含有#include语句行,则该程序的编译和运行过程是怎样的?

9.23与用malloc()函数和free()函数进行存储单元的动态申请和释放相比,用new运算符和delete运算符进行存储单元的动态申请和释放有什么优点?

程序阅读和设计题:

9.24阅读程序,给出运行结果:

(1)

#include"iostream.h"

intm=10;

voida(intn)

{

n=15/n;

m=m/2;

}

voidmain()

{

intn=3;

a(n);

cout<<"m="<

}

(2)

#include"iostream.h"

intcount(double*a)

{

double*p=a;

while(*p!

=0)

p++;

return(p-a);

}

voidmain()

{

doublea[]={1.0,2.0,8.0,3.0,0.0,4.0,7.0};

cout<

}

(3)

#include"iostream.h"

boolisprime(intm)

{

for(inti=2;m%i!

=0;i++)

{}

return(i==m);

}

voidmain()

{

intm=3;

while(isprime(m))

{

cout<<"yes"<

m++;

}

cout<<"not"<

}

(4)

#include"iostream.h"

#include"iomanip.h"

intsum(inta[],intn)

{

for(ints=0,i=0;i

{

s+=a[i];

a[i]*=a[i];

}

returns;

}

voidmain()

{

inti,a[]={5,4,3,2,1};

cout<

for(i=0;i<5;i++)

cout<

}

(5)

#include"iostream.h"

#include"iomanip.h"

voidf(int*p,intn)

{

for(inti=0;i

{

(*p)++;

}

}

voidmain()

{

inti,a[]={0,1,2,3,4},*p=&a[0];

f(p,2);

for(i=0;i<5;i++)

cout<

}

(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.受到函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1