文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计教程 答案

面向对象程序设计教程 答案

面向对象程序设计教程 答案
面向对象程序设计教程 答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导

第1章

面向对象程序设计概论

一、名词解释

抽象封装消息

【问题解答】

面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。

面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。

消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。

二、填空题

(1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。

(2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。

(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。

三、选择题(至少选一个,可以多选)

(1)面向对象程序设计着重于( B )的设计。

A. 对象

B. 类

C. 算法

D. 数据

(2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( C )。

A. 抽象

B. 继承

C. 封装

D. 多态

(3)在面向对象程序设计中,类通过( D )与外界发生关系。

A. 对象

B. 类

C. 消息

D. 接口

(4)面向对象程序设计中,对象与对象之间的通信机制是( C )。

A. 对象

B. 类

C. 消息

D. 接口

(5)关于C++与C语言的关系的描述中,( D )是错误的。

A. C语言是C++的一个子集

B. C语言与C++是兼容的

C. C++对C语言进行了一些改进

D. C++和C语言都是面向对象的

【结果分析】

C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。

(6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

A. 算法

B. 信息

C. 数据隐藏

D. 数据抽象

(7)下面( A )不是面向对象系统所包含的要素。

A. 重载

B. 对象

C. 类

D. 继承

【结果分析】

面向对象=对象+类+继承+消息+多态

(8)下面说法正确的是( BC )。

A. 将数据结构和算法置于同一个函数内,即为数据封装

B. 一个类通过继承可以获得另一个类的特性

C. 面向对象要求程序员集中于事物的本质特征,用抽象的观点看待程序

D. 同一消息为不同的对象接受时,产生的行为是一样的,这称为一致性

【结果分析】

面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。将数据结构和算法置于同一个类内,即为数据封装。同一消息为不同的对象接受时,产生的行为可能是不一样的,这称为多态性。

(9)下面说法正确的是( AD )。

A. 对象是计算机内存中的一块区域,它可以存放代码和数据

B. 对象实际是功能相对独立的一段程序

C. 各个对象间的数据可以共享是对象的一大优点

D. 在面向对象的程序中,对象之间只能通过消息相互通信

【结果分析】

对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系,但它们之间只能通过消息进行通信。

四、判断题

(1)在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。(√ )

(2) C++语言只支持面向对象技术的抽象性、封装性、继承性等特性,而不支持多态性。(× )

【结果分析】

C++语言不仅支持面向对象技术的抽象性、封装性、继承性等特性,而且支持多态性。

(3)面向对象程序设计中的消息应该包含“如何做”的信息。(× )

【结果分析】

消息是面向对象程序设计用来描述对象之间通信的机制。向对象“发送消息”只需告诉对象做什么,对象根据这个消息决定如何做。

(4)一个消息只能产生特定的响应效果。(× )

【结果分析】

当一个对象发出消息时,由于接收对象的类型可能不同,所以,它们可能做出不同的反应。这样,一个消息可以产生不同的响应效果,这种现象叫做多态。(5)类的设计和类的继承机制实现了软件模块的可重用性。(√ )

(6) C++语言和Java语言均不是一个纯正的面向对象的程序设计的语言。(× )

【结果分析】

Java语言是一个纯正的面向对象的程序设计语言。

(7)学习C++语言是学习面向对象的程序设计方法的唯一途径。(× )

【结果分析】

程序设计方法是独立于具体程序设计语言的一种技术,学习C++语言是学习面向对象程序设计方法的重要途径之一。

(8)在C++语言中,类是支持数据封装的工具。(√ )

五、简答题

(1)什么是结构化程序设计方法?它有哪些优点和缺点?

【问题解答】

结构化程序设计方法着眼于系统要实现的功能,从系统的输入输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题。由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差。它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。

(2)什么是面向对象程序设计方法?它有哪些优点?

【问题解答】

面向对象的程序设计方法中,将程序设计为一组相互协作的对象而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为:

程序=对象+消息

在面向对象程序设计中应着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计来完成实体的建模任务。类通过一个简单的外部接口与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

(3)结构化程序设计方法与面向对象程序设计方法在对待数据结构和算法关系上有什么不同?

【问题解答】

结构化程序设计方法中,把数据结构和算法分离为相互独立的实体;而在面向对象程序设计中,数据结构和算法封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。

2

从C到C++

面向对象程序设计教程(C++语言描述)题解与课程设计指导

第2章

从C到

C++

一、名词解释

引用内联函数重载函数

【问题解答】

所谓引用就是给对象取一个别名,使用该别名可以存取该对象。换句话说是使新对象和原对象共用一个地址。

内联函数是使用inline关键字声明的函数。

重载函数指在同一个作用域内名字相同而参数不同的函数。重载函数通常用来对具有相似行为而数据类型或数据个数不同的操作提供—个通用的名称。

二、填空题

(1)一般情况下,用C++语言编写的程序是由函数加上类组成的。

(2) C++有两种注释符号,一种是//,另一种是/*……*/。

(3)使用C++风格的输入输出,在程序中必须包含头文件“iostream”。(4) cin是预定义的标准输入流对象,>>是输入操作符,也称提取运算符。(5) cout是预定义的标准输出流对象,<<是输出操作符,也称插入运算符。(6)指针的值是它所指向那个对象的地址值。指针的类型是它所指向对象的类型。指针的内容便是它所指向对象的值。

(7) C++使用运算符&来定义一个引用,对引用的存取都是对它所引用的对象的存取。

(8)当一个函数调用出现在函数定义之前时,必须先用函数原型对函数进行声明。

(9) C++有值传递和引用传递两种参数传递机制。

(10)使用关键字inline声明的函数称为内联函数。

(11)运算符new用于进行动态内存分配,运算符delete用于释放动态分配的内存。

(12)下面程序的输出结果为x=10,y=10;

x=100,y=100。

#include

using namespace std;

int main()

{

int x=10,&y=x;

cout<<"x="<

int *p=&y;

*p=100;

cout<<"x="<

return 0;

}

三、选择题(至少选一个,可以多选)

(1)在整型指针变量p2、p3的定义中,错误的是( A )。

A. int p1,*p2,p3;

B. int*p2,p1,*p3;

C. int p1,*p2=&p1,*p3;

D. int*p2,p1,*p3=&p1;

【结果分析】

指针定义的具体格式如下所示:

<类型> *<指针名1>,*<指针名2>,…;

(2)若有定义“double xx=3.14,*pp=&xx;”,则*pp等价于( C )。

A. &xx

B. *xx

C. 3.14

D. xx

【结果分析】

pp指向xx所在的内存单元,这样*pp和xx等价。

(3)下面对引用的描述中( C )是错误的。

A. 引用是某个变量或对象的别名

B. 建立引用时,要对它初始化

C. 对引用初始化可以使用任意类型的变量

D. 引用与其代表的对象具有相同的地址

【结果分析】

所谓引用就是给对象取一个别名,使用该别名可以存取该对象,所以对引用初始化必须使用同类型的变量。

(4)函数没有返回值的时候,应该选择( A )的函数类型。

A. void

B. int

C. 不确定

D. float

(5)在函数的定义格式中,下面各组成部分中,( D )是可以省略的。A. 函数名 B. 函数体 C. 返回值类型 D. 函数参数

【结果分析】

函数的定义可以缺省形式参数,此时称为无参函数。

(6)对重载的函数来说,下面叙述不正确的是( D )。

A. 参数的类型不同

B. 参数的顺序不同

C. 参数的个数不同

D. 参数的个数、类型、顺序都相同,但函数的返回值类型不同

【结果分析】

对重载的函数来说,编译系统将根据函数参数的类型和个数来判断使用哪一个函数,所以重载函数参数的个数、类型、顺序不能都相同。

(7)下列有关设置函数参数默认值的描述中,( D )是正确的。

A. 对设置函数参数默认值的顺序没有任何规定

B. 函数具有一个参数时不能设置默认值

C. 默认参数要设置在函数的原型中,而不能设置在函数的定义语句中

D. 设置默认参数可使用表达式,但表达式中不可用局部变量

【结果分析】

在C++中,在函数原型中可以为一个或多个参数指定默认值。对函数参数设置默认值要注意以下几点。

◆若没有声明函数原型,参数的默认值可在函数定义的头部进行设置,否则必须在函数原型中进行设置。

◆在一个指定了默认值的参数右边不能出现没有指定默认值的参数。

◆设置默认参数可使用表达式,但表达式中不可用局部变量。

(8)下面说法正确的是( BC )。

A. 所有的函数都可以说明为内联函数

B. 具有循环语句、switch语句的函数不能说明为内联函数

C. 使用内联函数,可以加快程序执行的速度,但会增加程序代码的大小

D. 使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢

【结果分析】

内联函数主要是解决程序的运行效率问题。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间,但会增加程序代码的大小。它是以空间换取时间,因此内联函数适用于功能不太复杂,但要求被频繁调用的函数。

(9)一个函数功能不太复杂,但要求被频繁调用,应选用( A )。

A. 内联函数

B. 重载函数

C. 递归函数

D. 嵌套函数

(10) C++对C语言做了很多改进,下列描述中使得C语言发生了质变,即从面向过程变成面向对象的是( D )。

A. 增加了一些新的运算符

B. 允许函数重载,并允许设置默认参数

C. 规定函数说明必须用原型

D. 引进了类和对象的概念

【结果分析】

面向对象=对象+类+继承+消息+多态

四、判断题

(1) C++程序中,不得使用没有定义或说明的变量。(√ )

(2)使用const说明常量时,可以不必指出类型。(× )

【结果分析】

如果用const 定义的是一个整型常量,则类型说明符int可以省略。

(3)引用被创建时可以用任意变量进行初始化。(× )

【结果分析】

对引用初始化必须使用同类型的变量。

(4)一个返回引用的调用函数可以作为左值。(√ )

(5)函数可以没有参数,也可以没有返回值。(√ )

(6)没有参数的两个函数是不能重载的。(√ )

(7)函数可设置默认参数,但不允许将一个函数的所有参数都设置为默认参数。(× )

【结果分析】

函数可设置默认参数,且允许将一个函数的所有参数都设置为默认参数。

(8)运算符new分配的空间由运算符delete释放。(√ )

五、简答题

(1)名字空间的用途是什么?

【问题解答】

名字空间用来防止命名的冲突。

(2)引用有何用处?

【问题解答】

除了独立引用外,在C++程序中,引用的主要用途是用作函数参数和函数的返回值。

(3)比较值调用和引用调用的相同点与不同点。

【问题解答】

在值调用机制中,作为实参的表达式的值被复制到由对应的形参名所标识的一个对象中,作为形参的初始值。函数体对形参的访问、修改都是在这个标识对象上操作的,与实参无关,即数据的传递是单向的。

使用引用作函数的形参时,调用函数的实参要用变量名。实参传递给形参,相当于在被调用函数中使用了实参的别名。于是,在被调用函数中对形参的操作实质是对实参的直接操作,即数据的传递是双向的。

(4)内联函数有什么作用?它有哪些特点?

【问题解答】

内联函数是使用inline关键字声明的函数。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间。

使用内联函数应注意以下几点。

◆递归函数不能定义为内联函数。

◆内联函数一般适合于不含有switch和while等复杂的结构且只有1~5条语句的小函数,否则编译系统将该函数视为普通函数。

◆内联函数只能先定义后使用,否则编译系统也将该函数视为普通函数。

◆对内联函数也不能进行异常接口声明。

(5)函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗?

【问题解答】

不必一致。所有的参数是根据位置和类型而不是名字来区分的。

(6)重载函数时通过什么来区分?

【问题解答】

编译系统将根据函数参数的类型和个数来判断使用哪一个函数。

六、程序分析题(写出程序的输出结果,并分析结果)

#include

using namespace std;

int main()

{

int num=50;

int& ref=num;

ref=ref+10;

cout<<"num="<

num=num+40;

cout<<"ref="<

return 0;

}

【输出结果】

num=60

ref=100

【问题分析】

本题主要考查引用的含义。

【结果分析】

程序首先定义一个int类型的对象num,并给它赋初始值50。然后又定义了一个int类型的引用ref,并将它和num相联系。这样,无论是对num还是对ref进行操作,实际上都是对那个一开始放着50的物理单元的内容进行操作。

七、程序设计题

写出一个完整的C++程序,使用系统函数pow(x,y)计算xy的值,注意包含头文件cmath。

【问题分析】

本题主要考查简单的输入输出和标准库函数的调用方法。

【解题思路】

① 由于要用到系统函数pow(x,y),所以要包含头文件cmath。

② 要计算xy的值,首先必须知道x和y的值。为了程序的通用性,最好通过交互的方式输入x和y的值。

【参考程序】

// xt2_1.cpp

#include

#include

using namespace std;

int main()

{

float x,y;

cout<<"please input 2 floats to x,y:";

cin>>x>>y;

float z=pow(x,y);

cout<<"pow("<

return 0;

}

【输出结果】

please input 2 floats to x,y:3.1 2

pow(3.1,2)=9.61

3

类与对象

面向对象程序设计教程(C++语言描述)题解与课程设计指导

第3章

类与对象

一、填空题

(1)类定义中关键字private、public和protected以后的成员的访问权限分别是私有、公有和保护。如果没有使用关键字,则所有成员默认定义为private 权限。具有public访问权限的数据成员才能被不属于该类的函数所直接访问。(2)定义成员函数时,运算符“∷”是作用域运算符,“MyClass∷”用于表明其后的成员函数是在“MyClass类”中说明的。

(3)在程序运行时,通过为对象分配内存来创建对象。在创建对象时,使用类作为样板,故称对象为类的实例。

(4)假定Dc是一个类,则执行“Dc a[10],b(2)”语句时,系统自动调用该类构造函数的次数为11。

【结果分析】

创建10个数组元素需调用构造函数10次,创建对象b需调用构造函数1次,所以系统自动调用该类构造函数的总次数为11。

(5)对于任意一个类,析构函数的个数最多为1个。

(6) delete运算符通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

(7) C++程序的内存格局通常分为4个区:数据区、代码区、栈区和堆区。(8)数据定义为全局变量,破坏了数据的封装性;较好的解决办法是将所要共享的数据定义为类的静态成员。

(9)静态数据成员和静态成员函数可由任意访问权限许可的函数访问。(10)友元函数和友元类统称为友元。

(11)友元的正确使用能提高程序的效率,但破坏了类的封装性和数据的隐蔽性。

(12)若需要把一个类A定义为一个类B的友元类,则应在类B的定义中加入一条语句: friend class A;。

二、选择题(至少选一个,可以多选)

(1)以下不属于类访问权限的是( B )。

A. public

B. static

C. protected

D. private

【结果分析】

类的访问权限有public、protected 和private。

(2)有关类的说法不正确的是( BC )。

A. 类是一种用户自定义的数据类型

B. 只有类的成员函数才能访问类的私有数据成员

C. 在类中,如不做权限说明,所有的数据成员都是公有的

D. 在类中,如不做权限说明,所有的数据成员都是私有的

【结果分析】

类是一种用户自定义的数据类型,类中成员均具有一种访问权限。关键字public、protected 和private以后的成员的访问权限分别是公有、保护和私有的,所有成员默认定义为private的。

私有成员是被隐藏的数据,只有该类的成员函数或友元函数才可以访问它。(3)在类定义的外部,可以被任意函数访问的成员有( C )。

A. 所有类成员

B. private或protected的类成员

C. public的类成员

D. public或private的类成员

【结果分析】

类是一种用户自定义的数据类型,类中成员均具有一种访问权限。公有成员定义了类的外部接口。私有成员是被隐藏的数据,只有该类的成员函数或友元函数才可以引用它。保护成员具有公有成员和私有成员的双重性质,可以被该类或派生类的成员函数或友元函数引用。可见在类定义的外部,可以被任意函数访问的成员是public的类成员。

(4)关于类和对象的说法( C )是错误的。

A. 对象是类的一个实例

B. 任何一个对象只能属于一个具体的类

C. 一个类只能有一个对象

D. 类与对象的关系和数据类型与变量的关系相似

【结果分析】

C++语言的类就是一种用户自己定义的数据类型,类和对象的关系就相当于基本数据类型与它的变量的关系,所以任何一个对象只能属于一个具体的类,但一个类可以有多个对象。

(5)设MClass是一个类,dd是它的一个对象,pp是指向dd的指针,cc是dd 的引用,则对成员的访问,对象dd可以通过( B )进行,指针pp可以通过( D )进行,引用cc可以通过( B )进行。

A. ∷

B. .

C. &

D.->

(6)关于成员函数的说法中不正确的是( C )。

A. 成员函数可以无返回值

B. 成员函数可以重载

C. 成员函数一定是内联函数

D. 成员函数可以设定参数的默认值

【结果分析】

与普通函数不同的是,成员函数是属于某个类的。成员函数的实现,可以放在类体内,也可以放在类体外。在类体外实现的成员函数不再是内联函数。

(7)下面对构造函数的不正确描述是( B )。

A. 系统可以提供默认的构造函数

B. 构造函数可以有参数,所以也可以有返回值

C. 构造函数可以重载

D. 构造函数可以设置默认参数

【结果分析】

构造函数不能指定返回类型,即使是void类型也不可以,当然不可能有返回值。(8)假定A是一个类,那么执行语句“A a,b(3),*p;”调用了( B )次构造函数。

A. 1

B. 2

C. 3

D. 4

【结果分析】

声明指针是不会调用构造函数的。

(9)下面对析构函数的正确描述是( AC )。

A. 系统可以提供默认的析构函数

B. 析构函数必须由用户定义

C. 析构函数没有参数

D. 析构函数可以设置默认参数

【结果分析】

析构函数的作用是在对象消失时执行一项清理任务。如果一个类中没有定义析构函数,系统将自动生成一个默认析构函数。析构函数没有参数,当然不可能设置默认参数。

(10)类的析构函数是( D )时被调用的。

A. 类创建

B. 创建对象

C. 引用对象

D. 释放对象

(11)创建一个类的对象时,系统自动调用( B );撤销对象时,系统自动调用( C )。

A. 成员函数

B. 构造函数

C. 析构函数

D. 复制构造函数

(12)通常拷贝构造函数的参数是( C )。

A. 某个对象名

B. 某个对象的成员名

C. 某个对象的引用名

D. 某个对象的指针名

(13)关于this指针的说法正确的是( B )。

A. this指针必须显式说明

B. 当创建一个对象后,this指针就指向该对象

C. 成员函数拥有this指针

D. 静态成员函数拥有this指针。

【结果分析】

this指针是由C++编译器自动产生且较常用的一个隐含对象指针,它不能被显式声明。当创建一个对象时,this指针就初始化指向该对象。但只有非静态成员函数才拥有this指针,并通过该指针来处理对象。

(14)下列关于子对象的描述中,( B )是错误的。

A. 子对象是类的一种数据成员,它是另一个类的对象

B. 子对象可以是自身类的对象

C. 对子对象的初始化要包含在该类的构造函数中

D. 一个类中能含有多个子对象作其成员

【结果分析】

子对象不可以是自身类的对象。

(15)对new运算符的下列描述中,( B )是错误的。

A. 它可以动态创建对象和对象数组

B. 用它创建对象数组时必须指定初始值

C. 用它创建对象时要调用构造函数

D. 用它创建的对象数组可以使用运算符delete来一次释放

【结果分析】

使用运算符new创建对象数组的格式如下:

new <类型说明符> [<算术表达式>]

其中,<算术表达式>给出数组的大小,后面不能再跟构造函数参数,所以用它创建对象数组时不能指定初始值。

(16)对delete运算符的下列描述中,( D )是错误的。

A. 用它可以释放用new运算符创建的对象和对象数组

B. 用它释放一个对象时,它作用于一个new所返回的指针

C. 用它释放一个对象数组时,它作用的指针名前须加下标运算符[]

D. 用它可一次释放用new运算符创建的多个对象

【结果分析】

用delete一次只能释放用new创建的1个对象,但可释放一个对象数组。(17)关于静态数据成员,下面叙述不正确的是( C )。

A. 使用静态数据成员,实际上是为了消除全局变量

B. 可以使用“对象名.静态成员”或者“类名∷静态成员”来访问静态数据成员

C. 静态数据成员只能在静态成员函数中引用

D. 所有对象的静态数据成员占用同一内存单元

【结果分析】

静态数据成员可以在静态成员函数中引用,也可以在非静态成员函数中引用。(18)对静态数据成员的不正确描述是( CD )。

A. 静态成员不属于对象,是类的共享成员

B. 静态数据成员要在类外定义和初始化

C. 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

D. 只有静态成员函数可以操作静态数据成员

【结果分析】

this指针是一个局部量,局部于某个对象,而静态成员函数是属于整个类而不是某个对象,它没有this指针。静态成员函数和非静态成员函数均可操作静态数据成员。

(19)下面的选项中,静态成员函数不能直接访问的是( D )。

A. 静态数据成员

B. 静态成员函数

C. 类以外的函数和数据

D. 非静态数据成员

【结果分析】

由于静态成员函数没有this指针,它只能直接访问该类的静态数据成员、静态成员函数和类以外的函数和数据,访问类中的非静态数据成员必须通过参数传递方式得到对象名,然后通过对象名来访问。

(20)在类的定义中,引入友元的原因是( A )。

A. 提高效率

B. 深化使用类的封装性

C. 提高程序的可读性

D. 提高数据的隐蔽性

【结果分析】

友元的作用主要是为了提高效率和方便编程,但友元破坏了类的封装性和隐蔽性,使用时要权衡利弊。

(21)友元类的声明方法是( A )。

A. friend class<类名>;

B. youyuan class<类名>;

C. class friend<类名>;

D. friends class<类名>;(22)下面对友元的错误描述是( D )。

A. 关键字friend用于声明友元

B. 一个类中的成员函数可以是另一个类的友元

C. 友元函数访问对象的成员不受访问特性影响

D. 友元函数通过this指针访问对象成员

【结果分析】

友元函数是一个放在类中的普通函数,它没有this指针。

(23)下面选项中,( C )不是类的成员函数。

A. 构造函数

B. 析构函数

C. 友元函数

D. 拷贝构造函数

三、简答题

(1)类与对象有什么关系?

【问题解答】

类是一种用户自己定义的数据类型,和其他数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数。程序员可以使用这个新类型在程序中声明新的变量,具有类类型的变量称为对象。创建对象时,类被用做样板,对象称为类的实例。

(2)类定义的一般形式是什么?其成员有哪几种访问权限?

【问题解答】

定义类一般形式为:

class类名{

public:

<公有数据和函数>

protected:

<保护数据和函数>

private:

<私有数据和函数>

};

访问权限共有3种:分别是公有(public)、保护(protected)和私有(private)。(3)类的实例化是指创建类的对象还是定义类?

【问题解答】

指创建类的对象。

(4)什么是this指针?它的主要作用是什么?

【问题解答】

this指针是C++语言为成员函数提供的一个隐含对象指针,它不能被显式声明。this指针是一个局部量,局部于某个对象。不同的对象调用同一个成员函数时,编译器根据this指针来确定应该引用哪一个对象的数据成员。

(5)什么叫做拷贝构造函数?拷贝构造函数何时被调用?

【问题解答】

拷贝构造函数是一种特殊的构造函数,它的作用是用一个已经存在的对象去初始化另一个对象。为了保证所引用的对象不被修改,通常把引用参数声明为const 参数。

在以下3种情况下,拷贝构造函数都会被自动调用:

◆当用类的一个对象去初始化该类的另一个对象时;

◆当函数的形参是类的对象,进行形参和实参结合时;

◆当函数的返回值是类的对象,函数执行完成返回调用者时。

四、程序分析题(写出程序的输出结果,并分析结果)

(1)

#include

using namespace std;

class Test

{

private:

int num;

Test();// 默认构造函数

Test(int n); // 带一个参数构造函数};

Test∷Test()

{

cout<<"Init defa"<

num=0;

}

Test∷Test(int n)

{

cout<<"Init"<<" "<

num=n;

}

int main()

{

Test x[2];// 语句1

Test y(15); // 语句2

return 0;

}

【输出结果】

Init defa

Init 15

【问题分析】

本题主要考查构造函数的调用时机和构造函数的匹配问题。

【要点提示】

构造函数在创建对象时被自动调用,具体调用哪个构造函数将由编译系统根据重载函数的匹配原则来确定。

【结果分析】

① 程序声明了2个对象x和y,类中有2个构造函数。

② 程序首先执行语句1,创建对象x,调用默认构造函数。由于对象x是对象数组,每个数组元素被创建时都要调用构造函数,所以默认构造函数被调用了2次,输出第1、2行结果。程序接着执行语句2,创建对象y,调用带一个参数的构造函数,输出第3行结果。

(2)

#include

using namespace std;

class Xx

{

private:

int num;

public:

Xx(int x){num=x;} // 构造函数

~Xx(){cout<<"dst "<

};

int main()

{

Xx w(5); // 语句1

cout<<"Exit main"<

return 0;

}

【输出结果】

Exit main

dst 5

【问题分析】

本题主要考查析构函数的调用时机。

【要点提示】

析构函数在释放对象时被自动调用。

【结果分析】

① 程序声明了一个对象w。

② 程序首先执行语句1,创建对象w,调用构造函数,num得到初值5。程序接着执行语句2,输出第1行结果。当程序结束时,释放对象w,析构函数被调用,输出第2行结果。

(3)将例3.10中的Whole类如下修改,其他部分不变,写出输出结果。class Whole

{

public:

Whole(int i); // Whole的有参构造函数

Whole(){}; // Whole的无参构造函数

~Whole(); // Whole的析构函数

private:

Part p1;// 子对象1

Part p2;// 子对象2

Part p3;// 子对象3

};

Whole∷Whole(int i):p2(i),p1()

{

cout<<"Constructor of Whole"<

}

Whole∷~Whole()

{

cout<<"Destructor of Whole"<

}

【输出结果】

Default constructor of Part

Constructor of Part,3

Default constructor of Part

Constructor of Whole

Destructor of Whole

Destructor of Part,0

Destructor of Part,3

Destructor of Part,0

【问题分析】

本题主要考查子对象初始化的方法和含有子对象时构造函数和析构函数的调用顺序。

【要点提示】

◆当建立X类的对象时,先调用子对象的构造函数,初始化子对象,然后才执行X类的构造函数,初始化X类中的其他成员。

◆对子对象构造函数的调用顺序取决于这些子对象在类中的说明顺序,与它们在成员初始化列表中给出的顺序无关。

◆如果X类的构造函数没有给出成员初始化列表,表明子对象将使用默认构造函数进行初始化。

◆析构函数的调用顺序与构造函数的调用顺序正好相反。

【结果分析】

程序的Whole类中出现了类Part的3个对象p1、p2和p3,作为该类的数据成员,则p1、p2和p3被称为子对象。当建立Whole类的对象w时,子对象p1、p2和p3被建立,相应的构造函数被执行。由于p1在Whole类中先说明,所以先执行它所使用的构造函数,即类Part的默认构造函数,接着p2执行它所使用的有参构造函数,紧接着初始化p3,由于Whole类构造函数的成员初始化列表中没有子对象p3进行初始化的选项,所以执行类Part的默认构造函数,当所有子对象被构造完之后,对象w的构造函数才被执行,从而得到前4行输出结果,而后4行是执行相应析构函数的输出结果。

(4)

#include

using namespace std;

class Book

{

public:

Book(int w);

static int sumnum;

private:

int num;

};

Book∷Book(int w)

{

num=w;

sumnum-=w;

}

int Book∷sumnum=120;// 语句1

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

MOOC大学计算机计算思维的视角课程考试答案

课程考试 1单选(1分)关于思维,下列说法正确的是(A)。 A.思维是在表象、概念的基础上进行分析、综合、判断、推理等认识活动的过程。 B.思维是人类与生俱来的,与后天的学习无关。 C.思维是大脑的基本功能,大脑是人体的直接感觉器官。 D.思维是人类凭借知识、经验对客观事物进行的直接和间接反应。 2单选(1分)关于信息技术(Information Technology,IT),下列说法正确的是(C)。 A.信息技术无法对工业社会形成的传统设备进行技术改造,成为智能设备。 B.在信息处理的每一个环节,都必须使用信息技术。 C.现代信息技术是指以微电子技术、计算机技术和通信技术为特征的技术。 D.信息技术就是计算机技术和计算机网络技术。 3单选(1分)二进制是由下列哪位科学家首先提出来的(D)。 A.图灵 B.巴贝奇 C.冯.诺伊曼 D.莱布尼兹 4单选(1分)在计算机中,引入16进制,主要目的是(B)。 A.计算机的内存地址采用16进制编制。 B.简便二进制串的书写。 C.计算机中的数据存储可以采用16进制。 D.计算机中的数据运算可以采用16进制。

5单选(1分)关于计算机字,下列说法正确的是(C)。 A.计算机字的位数为字长,字长是任意的。 B.一个计算机字就是指两个字节。 C.在计算机中,作为一个整体来处理、保存或传送的二进制字串称为计算机字。 D.计算机字都是32比特。 6单选(1分)设计算机字长为16位,一个数的补码为10000,则该数字的值是(D)。 A.-0 B.+0 C.32768 D.-32768 7单选(1分)关于微处理器,下列说法错误的是(C)。 A.微处理器执行CPU控制部件和算术逻辑部件的功能。 B.微处理器不包含内存储器。 C.微处理器就是微机的CPU,由控制器运算器和存储器组成。 D.微处理器与存储器和外围电路芯片组成微型计算机。 8单选(1分)关于计算机运算速度,下列说法正确的是(C)。 A.每秒钟所执行的加法运算的次数。 B.运算速度即CPU主频。 C.运算速度与CPU主频有关,主频越高,CPU运算速度越快。 D.总线频率。 9单选(1分)关于计算机系统软件,下列说法不正确的是(C)。 A.系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的程序。

大学物理教程 (上)课后习题 答案

物理部分课后习题答案(标有红色记号的为老师让看的题) 27页 1-2 1-4 1-12 1-2 质点的运动方程为22,(1)x t y t ==-,,x y 都以米为单位,t 以秒为单位, 求: (1) 质点的运动轨迹; (2) 从1t s =到2t s =质点的位移的大小; (3) 2t s =时,质点的速度和加速度。 解:(1)由运动方程消去时间t 可得轨迹方程,将t = 代入,有 2 1) y =- 或 1= (2)将1t s =和2t s =代入,有 11r i = , 241r i j =+ 213r r r i j =-=- 位移的大小 r = = (3) 2x dx v t dt = = 2(1)y dy v t dt = =- 22(1)v ti t j =+- 2 x x dv a dt = =, 2y y dv a dt = = 22a i j =+ 当2t s =时,速度和加速度分别为 42/v i j m s =+ 22a i j =+ m/s 2 1-4 设质点的运动方程为cos sin ()r R ti R t j SI ωω=+ ,式中的R 、ω均为常 量。求(1)质点的速度;(2)速率的变化率。

解 (1)质点的速度为 sin cos d r v R ti R t j dt ωωωω==-+ (2)质点的速率为 v R ω = = 速率的变化率为 0dv dt = 1-12 质点沿半径为R 的圆周运动,其运动规律为232()t SI θ=+。求质点在t 时刻的法向加速度n a 的大小和角加速度β的大小。 解 由于 4d t d t θω= = 质点在t 时刻的法向加速度n a 的大小为 2 2 16n a R R t ω == 角加速度β的大小为 2 4/d ra d s d t ωβ== 77 页2-15, 2-30, 2-34, 2-15 设作用于质量1m kg =的物体上的力63()F t SI =+,如果物体在这一力作用 下,由静止开始沿直线运动,求在0到2.0s 的时间内力F 对物体的冲量。 解 由冲量的定义,有 2.0 2.0 2.02 (63)(33) 18I Fdt t dt t t N s = =+=+=? ? 2-21 飞机着陆后在跑道上滑行,若撤除牵引力后,飞机受到与速度成正比的阻力 (空气阻力和摩擦力)f kv =-(k 为常数)作用。设撤除牵引力时为0t =,初速度为0v ,求(1)滑行中速度v 与时间t 的关系;(2)0到t 时间内飞机所滑行的路程;(3)飞机停止前所滑行的路程。 解 (1)飞机在运动过程中只受到阻力作用,根据牛顿第二定律,有 dv f m kv dt ==- 即 d v k dt v m =- 两边积分,速度v 与时间t 的关系为 2-31 一质量为m 的人造地球卫星沿一圆形轨道运动,离开地面的高度等于地球

(完整版)《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

西安交通大学版信息技术七年级下教案

第1节电子表格初体验 一、学情分析 初一学生经过前三章的学习,已经掌握了信息技术的基本概念、Windows的基本操作和PowerPoint演示文稿制作的基本技巧,这些知识与技能为本章Excel的学习打下了良好的基础。学生很少或从未接触有关数据处理的知识,对Excel的学习是有一定的兴趣,但是由于学生的学习受到学生个体的知识水平与抽象思维的影响,因此在Excel的学习过程中对知识的理解会存在不同程度的困难。 二、教材内容分析 1、本节的主要内容及在本章中的地位 本节的主要内容是认识Excel的工作界面,及其组成;认识行、列和单元格;并能准确录入数据。让学生掌握修改数据的方法和修改工作表标签的操作。通过本节中录入数据的实例,掌握制作数据表的基本方法,为本章的学习打下基础。 2、教学重点、难点 重点:Excel窗口的组成,录入和修改单元格中的数据。 难点:录入和修改单元格中的数据,工作簿与工作表的区别。 3、课时安排:1课时。 三、教学目标 1.知识与技能 (1)了解Excel的基本功能; (2)学会启动和退出Excel的操作,认识Excel工作表的编辑环境; (3)理解工作表的行、列和单元格和区域的概念; (4)掌握单元格数据的录入与修改的操作; (5)学会修改工作表标签名的操作。 2.过程与方法 通过在Excel数据表格中录入数据,初步掌握制作数据工作表的方法。 3.情感态度价值观 培养现代信息管理意识,知道使用电子表格进行信息管理可以做到有条理,规范化和高效率,激发学习Excel知识的兴趣。 四、教学理念和方法 大多数软件课的教学都是以教师讲授,学生听的方式进行,这有点乏味,但是如果放任学生完全自主学习,又会造成学生毫无目的性的状况,因此,在本节课的讲授过程

大学物理 简明教程 第二版 课后习题 答案 赵进芳

大学物理 简明教程 习题 解答 答案 习题一 1-1 |r ?|与r ?有无不同?t d d r 和t d d r 有无不同? t d d v 和t d d v 有无不同?其不同在哪里?试举例说明. 解:(1)r ?是位移的模,?r 是位矢的模的增量,即r ?12r r -=,12r r r -=?; (2)t d d r 是速度的模,即t d d r ==v t s d d . t r d d 只是速度在径向上的分量. ∵有r r ?r =(式中r ?叫做单位矢),则 t ?r ?t r t d d d d d d r r r += 式中t r d d 就是速度径向上的分量, ∴t r t d d d d 与 r 不同如题1-1图所示 . 题1-1图 (3)t d d v 表示加速度的模,即 t v a d d = ,t v d d 是加速度a 在切向上的分量. ∵有ττ (v =v 表轨道节线方向单位矢),所以 t v t v t v d d d d d d ττ += 式中dt dv 就是加速度的切向分量. (t t r d ?d d ?d τ 与 的运算较复杂,超出教材规定,故不予讨论) 1-2 设质点的运动方程为x =x (t ),y =y (t ),在计算质点的速度和加速度时, 有人先求出r =22y x +,然后根据v =t r d d ,及a =22d d t r 而求得结果;又有人先 计算速度和加速度的分量,再合成求得结果,即 v =2 2 d d d d ??? ??+??? ??t y t x 及a = 2 22222d d d d ? ??? ??+???? ??t y t x 你认为两种方法哪一种正确?为什么?两者差别何在? 解:后一种方法正确.因为速度与加速度都是矢量,在平面直角坐标系中,有

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

大学物理简明教程(吕金钟)第四章习题答案

第四章电磁学基础 静电学部分 4.2解:平衡状态下受力分析 +q受到的力为: 处于平衡状态: (1) 同理,4q 受到的力为: (2) 通过(1)和(2)联立,可得:, 4.3解:根据点电荷的电场公式: 点电荷到场点的距离为: 两个正电荷在P点产生的电场强度关于中垂线对称: 所以: 当与点电荷电场分布相似,在很远处,两个正电荷q组成的电荷系的电场分布,与带电量为2q的点电荷的电场分布一样。 4.4解:取一线元,在圆心处 产生场强: 分解,垂直x方向的分量抵消,沿x方向 的分量叠加: 方向:沿x正方向 4.5解:(1 (2)两电荷异号,电场强度为零的点在外侧。 4.7解:线密度为λ,分析半圆部分: 点电荷电场公式: + +

在本题中: 电场分布关于x 轴对称:, 进行积分处理,上限为,下限为: 方向沿x轴向右,正方向 分析两个半无限长: ,,, 两个半无限长,关于x轴对称,在y方向的分量为0,在x方向的分量: 在本题中,r为场点O到半无限长线的垂直距离。电场强度的方向沿x轴负方向,向左。那么大O点的电场强度为: 4.8解:E的方向与半球面的轴平行,那么 通过以R为半径圆周边线的任意曲面的 电通量相等。所以 通过S1和S2的电通量等效于通过以R为半 径圆面的电通量,即: 4.9解:均匀带电球面的场强分布: 球面 R 1 、R2的场强分布为: 根据叠加原理,整个空间分为三部分: 根据高斯定理,取高斯面求场强: 图4-94 习题4.8用图 S1 S2 R O

场强分布: 方向:沿径向向外 4.10解:(1)、这是个球对称的问题 当时,高斯面对包围电荷为Q 当,高斯面内包围电荷为q 方向沿径向 (2)、证明:设电荷体密度为 这是一个电荷非足够对称分布的带电体,不能直接用高斯定理求解。但可以把这一带电体看成半径为R、电荷体密度为ρ的均匀带电球体和半径为R`、电荷体密度为-ρ的均匀带电体球相叠加,相当于在原空腔同时补上电荷体密度为ρ和-ρ的球体。由电场 叠加原理,空腔内任一点P的电场强度为: 在电荷体密度为ρ球体内部某点电场为: 在电荷体密度为-ρ球体内部某点电场为: 所以 4.11解:利用高斯定理,把空间分成三部分

研究生英语系列教程多维教程熟谙正文翻译及课后练习参考答案

Unit3 美国人的酷爱 我父亲是别克人。在经济大萧条以前,他本是史达兹人。然而,就像成千上万经济状况处于 上升阶段的有车族一样,那场可悲的经济逆转使他们非得调整对汽车的胃口不可。到他死的时候,他开过的那些别克轿车就不只是普通意义上的交通工具了,而且将父亲定位于这样的 社会阶层——比庞蒂亚克人富有,但比不上克迪拉克人。拥有别克轿车让人一看便知父亲的 社会地位。与别克人相当的还有福特人和克莱斯勒人。 我们美国人与汽车的特殊缘分,其坚实的基础就在于对一种轿车品牌的忠诚,这种忠诚因其来之不易而倍受珍惜。·这就是爱吗?也许用词过分,可美国人对这些机器的尊重甚过所有其 他机器——不仅将它们视为20世纪雕塑大观中的标志,而且还将它们视为社会的护身符。 我记忆中的第一辆别克车是一辆闪闪发亮的黑色轿车,椅子的衬垫是厚厚的马海毛,离合器拉杆是新式的。我父亲爱吹嘘说这辆车一小时能跑120英里。一想到这样的速度就会令男人 们兴奋不已。我照着家里的菲尔可牌收音机盒里播出的格林,霍利特驾驶的那个神秘机器的 名字,给这头漂亮的牲口取了个名副其实的绰号——黑美驹。 20世纪中,电话、电视或者个人电脑,这一切都使人类环境发生了巨大变化。然而,与电 话、电视、电脑不同的是,汽车却享有人格化的地位。有些汽车可以成为家庭成员,机械宠 物。我们给汽车起名字,在自己·家的车道上精心打扮汽车,在汽车不能满足我们的需要时 诅咒它们。在折旧换新之时为旧车的离去而悲哀。 人们对汽车的热爱让环境保护者、安全为重的倡导者以及社会工程师们感到不安。他们认为通往人间天堂的道路应该到处都铺设公交运输所必备的发亮轨道。他们想象着我们加入未来 拥挤不堪的自行车行列,而不是像一位激动不已的评论家所预见的那样,坐在“傲慢的双轮马车”方向盘后。这种态度不是现在才有的。首先是铁路,接着是汽车造成的人口流动早已 使得守旧的特权阶层感到不安。在战场上有过辉煌,但却以鄙视下层民众而出名的威林顿公 爵在150年前就曾反对英国发展铁路,这是因为火车只会怂恿普通人毫无意义地到处走动。 汽车呢,而今大家都认同的是,它污染环境、杀人、残害人、驱使人们离家游荡,实在可鄙。因此,汽车应被开除球籍,越快越好(还应带走路边购物中心、“免下车’’餐馆以及垃圾食品店等等乱七八糟的东西)。 的确,汽车应该对出现的许多问题负责,然而,汽车也是伟大的解放者。批评家们却宁愿对 这一事实视而不见。汽车可以使人口大规模地流动:从城市到郊区,从东部到西部,从南方 到北方。而近来更多的人又从北方回到南方,因为数百万人希望找到改善经济状况的机会。 一片片蔓延无矩的都市建筑群拔地而起——洛杉矶、澳兰多、亚特兰大、夏洛特、达拉斯、 拉斯韦加斯、菲尼克斯等等,其规划都是以适应汽车的需要为出发点。这样的规划并不完美(若代之以适应公共交通的规划也完美不起来),但实际状况仍然是:南部和西部环绕汽车兴 建的城市正在飞跃发展。环境保护主义者在担忧,大多数人却照样开着车。 在美国有1亿7千5百万人持有驾驶执照,开着近2亿辆汽车,行驶在390万英里的道路上。人们坐上自己的轿车、轻型货车、摩托车、带卧室的汽车、运动用车,每年行驶约2万4千亿英里。每年约有1,500,百万辆崭新的轿车和轻型货车涌上公路。赛车已成为这个国 家发展最快的运动项目。汽车行业雇了230万员工,比任何其他制造业都要多。

面向对象程序设计课程设计

《面向对象程序设计》课程设计 课程代码:*****(采用现行5位数字的课程代码) 课程名称:面向对象程序设计课程设计 设计周数:1周 学分:0.5学分 课程类别:必修课 一、课程设计的目的与任务 面向对象程序设计课程设计是计算机科学与技术、网络工程、信息管理与信息系统等专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。通过课程设计,学生可以将本课程所学知识点融会贯通,举一反三,加深实践与理解,提高学生综合运用所学知识的能力;另一方面,在参与一系列子项目的实践过程中,能使学生获得相关项目管理和团队合作等众多方面的实践经验。其目的在于加深对面向对象程序设计理论和基本知识的理解,通过对所选项目的分析、程序算法的设计、运行与调试过程的分析,使学生掌握基本的信息系统分析方法、设计方法和上机操作的各种技巧,对培养学生的逻辑思维能力、团队合作精神、创新能力、动手操作能力各方面素质有提供了良好的实践平台,为后续课程的学习打下一定的基础。 二、本课程设计的基本理论 本课程设计使用面向对象程序设计的方法解决实际问题,涵概了课程的所有重要知识点,如类与对象、继承与组合、虚函数与多态性等。 三、课程设计的形式与基本要求 形式:召开课程设计动员会,根据学生的学习水平和特长进行分组,每组选择指定课程设计的题目和内容。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成所选课题的设计,最后由指导教师进行验收及评定。 基本要求:要求学生做好预习,认真分析设计过程中涉及到的算法,并确定所选课题的功能模块,详细描述各模块的具体内容;用流程图描述实现算法,根据算法进行代码的编写,最后进行反复上机调试修改,直到输出正确结果为止。 认真写好课程设计报告,根据每组学生的分工,各自写出对解决问题的详细分析、模块功能、调试结果,最后将课程设计报告上交给指导教师。 四、课程设计的内容 选题一:员工管理信息系统 (1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。

面向对象程序设计教程答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

大学计算机_所有大学生都应学习的一门计算思维基础教育课程

中国大学教学 2011年第4期 15 战德臣,哈尔滨工业大学计算机科学与技术学院教授;聂兰顺,哈尔滨工业大学计算机科学与技术学院副教授;徐晓飞,哈尔滨工业大学校长助理、计算机科学与技术学院院长、软件学院院长,教授。 “大学计算机”——所有大学生都应学习的一门计算思维基础教育课程 战德臣 聂兰顺 徐晓飞 摘 要:当前,大学非计算机专业计算机课程存在知识型/技能型教学与未来计算能力需求之间的鸿沟,致使计算机教育存在危机。本文分析了这一危机产生的原因,提出应对危机跨越鸿沟的办法应是开展计算思维基础教育,分析了计算学科中的思维特别是可实现思维与知识、能力之间的关系,提出计算思维与计算能力的培养宜采取“1+X ”模式,界定了作为“1”的“大学计算机”课程中计算思维的特征,据此对“大学计算机”课程进行了面向计算思维教学的内容重构——讲授计算学科的普适思维(计算机的思维和应用计算机的思维)以及计算学科的基本素养,探讨了“大学计算机”课程的思维性教学方法。最后,简要介绍了上述教学改革在哈尔滨工业大学的实践及效果。 关键词:计算思维;大学计算机;非计算机专业 大学非计算机专业本科生的第一门计算机课程,在高校基础教育特别是计算机教育方面的重要性不言而喻。然而现实中,作为非计算机专业第一门计算机课程的计算机基础课程不仅没有受到重视,反而面临着严重的危机,普遍质疑此课程是否还有存在的必要。这种质疑不仅来自非计算机专业的学者,也来自计算机专业的学者。为什么会有这样的质疑?非计算机专业第一门计算机课程的核心价值是什么?非计算机专业第一门计算机课程及教学如何改革,以适应新的形势,应对上述危机?这些问题是每一个从事非计算机专业计算机教育工作者应重新思考的重大问题。本文基于作者在哈尔滨工业大学非计算机专业第一门计算机课程十多年的教学改革与实践,特别是自2009年课程面向计算思维教学的改革与实践,结合对上述问题的思考,探讨了非计算机专业第一门计算机课程的定位、教学内容重构、思维性教学方法等。 一、大学非计算机专业第一门计算机课程的发展回顾 非计算机专业第一门计算机课程自20世纪90年代中期普遍在大学中开设,被称为“计算机文化基础”,文化一词多少体现了基础性、思维性的内涵。然而随着执行过程中的偏差,文化的内涵越来越少,基础的内涵越来越大,课程逐渐演变为讲授计算机的基本概念以及常用/流行软件产品的使用。随后在20世纪90 年代末期,很多学校便以“计算机应用基础”取而代之,这种改变不仅是名称的变化,更有以下几个显著的内涵上的变化:一是从计算机学科的多门课程和多种重要软件中提炼出共性知识单元进行教学;二是教学方式以任务驱动的形式开展,比如强调科技文章的排版素养而非排版软件、讲授程序的基本要素与程序设计思想而非流行的程序设计语言等;三是在课堂教学与实验教学之间进行了科学合理的分工,即课堂教学侧重共性知识的讲授,实验教学侧重流行软件产品的应用技能训练。 现在大学非计算机专业第一门计算机课程已发展到新的阶段,应该将其开设成类似于大学数学、大学英语课程的、高等教育中不可缺少的独立课程,本文称其为“大学计算机”课程。这种改变,也不仅是课程名称上的变化,更在于课程内涵上的变化。当前,很多学者都强调,计算科学与理论科学和实验科学,并列成为推动人类文明进步和促进科技发展的三大手段。而作为计算科学基础的计算思维是大学生创新性思维培养的重要组成部分,因此“大学计算机”课程应强调计算思维基础教 育,知识讲授与素养培养应贯穿于计算思维的教学中。 二、大学非计算机专业第一门计算机课程 面临的危机及其产生原因分析 今天,随着计算机、网络的广泛和深度普及以及本科

研究生英语 多维教程熟谙(正文翻译+课后练习参考答案)

Unit1 从能力到责任 当代的大学生对他们在社会中所扮演的角色的认识模糊不清。他们致力于寻求在他们看来似乎是最现实的东西:追求安全保障,追逐物质财富的积累。年轻人努力想使自己成人成才、有所作为,但他们对未来的认识还是很模糊的。处于像他们这样前程未定的年龄阶段,他们该信仰什么?大学生一直在寻找真我的所在,寻找生活的意义。一如芸芸众生的我们,他们也陷入了两难的境地。一方面,他们崇尚奉献于人的理想主义,而另一方面,他们又经不住自身利益的诱惑,陷入利己主义的世界里欲罢不能。 最终而言,大学教育素质的衡量取决于毕业生是否愿意为他们所处的社会和赖以生存的城市作出贡献。尼布尔曾经写道:“一个人只有意识到对社会所负有的责任,他才能够认识到自身的潜力。一个人如果一味地以自我为中心,他将会失去自我。”本科教育必须对这种带有理想主义色彩的观念进行自我深省,使学生超越以自我为中心的观念,以诚相待,服务社会。在这一个竞争激烈\残酷的社会,人们期望大学生能报以正直、文明,,甚至富有同情心的人格品质去与人竞争,这是否已是一种奢望?人们期望大学的人文教育会有助于培养学生的人际交往能力,如今是否仍然适合? 毫无疑问,大学生应该履行公民的义务。美国的教育必须立刻采

取行动,使教育理所当然地承担起弥合公共政策与公众的理解程度之间的极具危险性且在日益加深的沟壑这一职责。那些要求人们积极思考政府的议程并提供富于创意的意见的信息似乎越来越让我们感到事不关己。所以很多人认为想通过公众的参与来解决复杂的公共问题已不再可能行得通。设想,怎么可能让一些非专业人士去讨论必然带来相应后果的政府决策的问题,而他们甚至连语言的使用都存在困难? 核能的使用应该扩大还是削弱?水资源能保证充足的供应吗?怎样控制军备竞赛?大气污染的安全标准是多少?甚至连人类的起源与灭绝这样近乎玄乎的问题也会被列入政治议事日程。 类似的一头雾水的感觉,公众曾经尝试过。当他们试图弄懂有关“星球大战”的辩论的问题时,那些关于“威慑”与“反威慑”等高科技的专业术语,曾让公众一筹莫展。像地方的区域规划,学校种族隔离制的废除,排水系统的问题,公共交通的治理,以及申请获得正在相互竞争的有线电视公司的许可证等这些曾经看起来只是一些地方性事务的事情,现在也需要专家采解决。这些专家的辩论充满着技术术语,常常使问题变得让人迷惑不解而不会使问题云开雾散,清晰明了。公共生活的复杂性,要求更多\而非更少的信息资料;需要更积极\而非越来越消极的公众的参与。

《面向对象程序设计》课程实验指导书2

《面向对象程序设计》课程实验指导书 合肥学院计算机系

实验一 Java开发环境的安装与配置,熟悉Java程序 结构 一、实验目的: 1. 掌握JDK的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及它们的设置方法。 3. 熟悉Editplus(或notePad,JCreator)编辑环境,编写简单的程序,并 编译和执行。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序和Applet程序(能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量Path, Classpath设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 4. 写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示, 并给出解决办法。 四、实验步骤: 1.从https://www.wendangku.net/doc/d57800172.html,上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Editplus(或 Textpad)环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.输出100以内的所有素数。 提示: 逐个判断小于a的每个正整数x,第二重循环针对x,判断其是否是质数。 2.编写程序,分别用do-while和for循环计算1+1/2!+1/3!+1/4!...的前 20项和 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码。 3.编译运行程序,观察输出结果是否正确。 五、自主实验(选1题完成实验报告) 1. 将所输入之正整数,以二、八、十六进制表示出来。 提示: 可写三个方法分别计算输出二、八、十六进制表示。 2.用户输入的一个分数(分别输入分子和分母)进行约分,并且输出约分后的分数(分别输出分子和分母)。例如输入分子为6并且分母为12,那么输出结果为1/2。 3.编程,计算e=1+1/1! +2/2! +……+n/n!。要求e值精确到小数点第5位。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

研究生英语多维教程熟谙课后题答案

Book II Unit 1 A. 1.assess 2.alliance 3.outcome 4.ethical 5.identity 6.ambiguous 7.tolerable 8.participates 9.pursuit 10.constructive B. 1.at stake 2.were obliged 3.the climate of 4.feel well-equipped 5.beyond my grasp 6.cut back 7.other than 8.rise above 9.care about 10.is bounded C. 1.incompetent 2.indulgence 3.migrants 4.probes https://www.wendangku.net/doc/d57800172.html,plex 6.suspense; engaged https://www.wendangku.net/doc/d57800172.html,passionate; committed 8.tolerant 9.tempted 10.interconnected D. 1. A. Judging from 2. B. in which 3. C. and 4. D. believe 5. A. is one of/ is that of 6. B. must get 7. C. likely 8. D. unemployed 9. C. as well as/ and 10.B. simpler E. 1.what 2.graduation 3.intend 4.getting 5.eventually 6.survey 7.although 8.graduates 9.transfer 10.rise 11.attending 12.instead 13.cause 14.because 15.attending 16.below 17.failure 18.expectations 19.confidence https://www.wendangku.net/doc/d57800172.html,cation Key to the translation from English to Chinese: 1.德.汤说过,一切进步,一切发展均来自挑战及由此引起的反应。没有挑战就没有反应,没有发展,没有自由。所以,我们首先应该在我们孩子的能力允许的范围内为他们开设最严格最富有挑战性的课程。 2.我们可以向我们的孩子提供第二个机会是允许他们有失败的权力。德.纽伊写道:“不仅是一种特权,也是一种考验。”如果没有人可以失败,那它算什么考验,算什么自由呢?美国可以向所有在高中读者完四年课程而不管其是否取得任何明显收获的学生发放毕业文凭的日子已经一去不复返了。我们现在生活在一个外变得很狭隘的世界里,们必须同对现实保持警觉,有所认识;而现实主义要求树立一个要么成功要么失败的标准。这些话听起来很刺耳,但都是残酷的事实。如果我们剥夺了孩子的失败权力,实际上我们就剥夺了他们如实地认识世界的机会。 Key to the translation from Chinese to English: 1.Today's university students are struggling to establish themselves, but they still have ambiguous

相关文档
相关文档 最新文档