《面向对象程序设计》习题三
一、单项选择题(本大题共25小题,每小题2分,共50分)
1、用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A、空格或逗号
B、逗号或回车
C、逗号或分号
D、空格或回车
2、C++中声明常量的关键字是()。
A、const
B、extern
C、public
D、enum
3、以下叙述中正确的是()
A、使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值
B、使用const定义的常量名有类型之分,其值在程序运行时是不可改变的
C、在程序中使用内置函数使程序的可读性变差
D、在定义函数时可以在形参表的任何位置给出缺省形参值
4、下列的符号常变量定义中,错误的定义是()。
A、const M=10;
B、const int M=20;
C、const char ch;
D、const bool mark=true;
5、函数原型语句正确的是()。
A、int Function(void a)
B、void Function (int);
C、int Function(a);
D、void int(double a);
6、在关键字private后面定义的成员为类的()成员。
A、私有
B、公用
C、保护
D、任何
7、在一个类的定义中,包含有()成员的定义。
A、数据
B、函数
C、数据和函数
D、数据或函数
8、在类作用域中能够通过直接使用该类的()成员名进行访问。
A、私有
B、公用
C、保护
D、任何
9、在关键字public后面定义的成员为类的()成员。
A、私有
B、公用
C、保护
D、任何
10、类中定义的成员默认为()访问属性。
A、public
B、private
C、protected
D、friend
11、每个类()构造函数。
A、只能有一个
B、可以有公用的
C、可以有多个
D、只可有缺省的
12、对类对象成员的初始化是通过构造函数中给出的()实现的。
A、函数体
B、参数初始化表
C、参数表
D、参数初始化表或函数体
13、假定AB为一个类,则执行“AB x;”语句时将自动调用该类的 ( ).。
A、有参构造函数
B、无参构造函数
C、复制构造函数
D、赋值重载函数
14、假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的 ( )。
A、带参构造函数
B、无参构造函数
C、复制构造函数
D、赋值重载函数
15、假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的()。
A、有参构造函数
B、无参构造函数
C、复制构造函数
D、赋值构造函数
16、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。
A、作为友元函数重载的1元运算符
B、作为成员函数重载的1元运算符
C、作为友元函数重载的2元运算符
D、作为成员函数重载的2元运算符
17、在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。
A、0
B、1
C、2
D、3
18、双目运算符重载为普通函数时,其参数表中应带有()个参数。
A、0
B、1
C、2
D、3
19、如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。
A、a.operator+(b)
B、b.operator+(a)
C、operator+(a,b)
D、operator(a+b)
20、如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。
A、a.operator==(b)
B、b.operator==(a)
C、operator==(a,b)
D、operator==(b,a)
21、派生类的成员函数可以直接访问基类的()成员。
A、所有
B、公有和保护
C、保护和私有
D、私有
22、派生类可以访问其基类的()。
A、公用成员
B、保护成员
C、私有派生
D、公用和保护成员
23、对于类中定义的成员,其隐含访问权限为()。
A、public
B、ptotected
C、private
D、static
24、在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为()方式。
A、私有继承
B、非私有继承
C、保护继承
D、公用继承
25、在公用继承的情况下,基类成员在派生类中的访问权限()
A、受限制
B、保持不变
C、受保护
D、不受保护
二、判断题(本大题共25小题,每小题2分,共50分,正确填“T”,错误填“F”)
1、字符串"sdfgh"的长度是5。()
2、将字符串常量存放到字符串变量时,包含字符串本身和结束符“\0”。()
3、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。()
4、使用new运算符创建数组时,可以为该数组指定初始值()。
5、在设计类时一般把数据成员设置为私有的,把函数成员设置为公用的,从而实现了公用接口和私有实现的分离。()
6、析构函数必须指定返回类型以及函数参数。()
7、如果定义了一个类的对象数组,该数组有10个元素,则要调用10次构造函数来对每个元素初始化。()。
8、友元函数说明在类体内,它是一种成员函数。()
9、友元类必须被说明为公用成员。()
10、运算符重载以后,其优先级和结合性都不能改变。()
11、重载单目运算符作为类的成员函数,函数没有参数。()
12、将运算符“+”函数重载为类的成员函数,交换律不适用。()
13、不能通过派生类对象引用从私有基类继承过来的任何成员。()
14、若类B是类A的私有派生类,类C是类B的私有派生类,则类C可访问类A的公用成员。()
15、在声明派生类时,派生类把基类的的构造函数也一起继承过来。()
16、派生类能够继承基类的析构函数。()
17、使用虚函数可以避免多重继承产生的二义性。()
18、当一个成员函数被声明为虚函数后,其派生类中的具有相同参数类型和相同参数个数类型的相同类型的同名函数也是虚函数。()
19、纯虚函数是在基类中说明的虚函数,它在该基类中必须定义具体的操作内容。()
20、不可以定义抽象类的对象。()
21、使用字符串流时必须打开文件。()
22、程序运行过程出现异常是由于语法错误引起的。()
23、在C++的异常处理方法中,try块和catch块必须作为一个整体出现。()
24在C++中,在文件中只能用“#include
25、C++中的所有运算符都允许重载。()
简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。
1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。
面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include
运筹学A卷) 一、单项选择题(从下列各题四个备选答案中选出一个正确答案,答案选错或未选者,该题不得分。每小题1分,共10分) 1.线性规划具有唯一最优解就是指 A.最优表中存在常数项为零 B.最优表中非基变量检验数全部非零 C.最优表中存在非基变量的检验数为零 D.可行解集合有界 2.设线性规划的约束条件为 则基本可行解为 A.(0, 0, 4, 3) B.(3, 4, 0, 0) C.(2, 0, 1, 0) D.(3, 0, 4, 0) 3.则 A.无可行解 B.有唯一最优解medn C.有多重最优解 D.有无界解 4.互为对偶的两个线性规划, 对任意可行解X 与Y,存在关系 A.Z > W B.Z = W C.Z≥W D.Z≤W 5.有6 个产地4个销地的平衡运输问题模型具有特征 A.有10个变量24个约束
B.有24个变量10个约束 C.有24个变量9个约束 D.有9个基变量10个非基变量 6、下例错误的说法就是 A.标准型的目标函数就是求最大值 B.标准型的目标函数就是求最小值 C.标准型的常数项非正 D.标准型的变量一定要非负 7、m+n-1个变量构成一组基变量的充要条件就是 A.m+n-1个变量恰好构成一个闭回路 B.m+n-1个变量不包含任何闭回路 C.m+n-1个变量中部分变量构成一个闭回路 D.m+n-1个变量对应的系数列向量线性相关 8.互为对偶的两个线性规划问题的解存在关系 A.原问题无可行解,对偶问题也无可行解 B.对偶问题有可行解,原问题可能无可行解 C.若最优解存在,则最优解相同 D.一个问题无可行解,则另一个问题具有无界解 9、有m个产地n个销地的平衡运输问题模型具有特征 A.有mn个变量m+n个约束…m+n-1个基变量 B.有m+n个变量mn个约束 C.有mn个变量m+n-1约束 D.有m+n-1个基变量,mn-m-n-1个非基变量 10.要求不超过第一目标值、恰好完成第二目标值,目标函数就是