阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如下图所示。其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。
当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,例如上图中的类MyApplication和类MyDocument,并分别实现Application和 Document类中的某些方法。
已知Application类中的openDocument方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:
1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;
2.创建文档对象;
3.通过文档对象打开文档;
4.通过文档对象读取文档信息;
5.将文档对象加入到Application的文档对象集合中。
【C++代码】
include<iostream>
include<vector>
using namespace std;
class Document{
public:
void save(){/*存储文档数据,此处代码省略*/)
void open(string docName){ /*打开文档,此处代码省略*/)
void close(){ /*关闭文档,此处代码省略*/)
virtual void read(string docName) =0;
};
class Appplication{
private:
vector<(1)> docs; /*文档对象集合*/
public:
bool canOpenDocument(string docName){
/*判断是否可以打开指定文档,返回真值时表示可以打开,
返回假值表示不可打开,此处代码省略*/
}
void addDocument(Document * aDocument){
/*将文档对象添加到文档对象集合中*/
docs.push_back((2));
}
virtual Document * doCreateDocument()=0;/*创建一个文档对象*/
void openDocument(string docName){/*打开文档*/
if ((3)){
cout<<“文档无法打开!”<<endl;
return;
}
(4) adoc=(5);
(6);
(7);
(8);
}
};
第1题:
阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。
【说明】
已知头指针分别为La和lb的有序单链表,其数据元素都是按值非递减排列。现要归并La和Lb得到单链表Lc,使得Lc中的元素按值非递减排列。程序流程图如下所示:
第2题:
读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知某类库开发商捉供了一套类库,类库中定义了Application类和Document类,它们之间的关系如下图所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。
当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,例如上图中的类MyApplication和类MyDocument,并分别实现Application和 Document类中的某些方法。
已知Application类中的openDocument方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:
1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;
2.创建文档对象;
3.通过文档对象打开文档;
4.通过文档对象读取文档信息;
5.将文档对象加入到Application的文档对象集合中。
【Java代码】
abstract class Document{
public void save(){/*存储文档数据,此处代码省略*/ )
public void open(String docName){ /*打开文档,此处代码省略*/)
public void close(){ /*关闭文档,此处代码省略*/)
public abstract void read(String docName);
};
abstract class Appplication{
private Vector<(1)> docs; /*文档对象集合*/
public boolean canOpenDocument(String docName){
/*判断是否可以打开指定文档,返回真值时表示可以打开,
返回假值表示不可打开,此处代码省略*/
}
public void addDocument(Document aDocument){
/*将文档对象添加到文档对象集合中*/
docs.add((2));
}
public abstract Document doCreateDocument();/*创建一个文档对象*/
public void openDocument(String docName){/*打开文档*/
if ((3)) {
System.out.println(“文档无法打开!”);
return;
}
(4) adoc=(5);
(6);
(7);
(8);
}
};
第3题:
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写在对应栏内。
【说明】
阅读下面几段C++程序回答相应问题。
比较下面两段程序的优缺点。
①for (i=0; i<N; i++ )
{
if (condition)
//DoSomething
…
else
//DoOtherthing
…
}
②if (condition) {
for (i =0; i<N; i++ )
//DoSomething
}else {
for (i=0; i <N; i++ )
//DoOtherthing
…
}
第4题:
C++本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream提供了基本的I/O类,它包括类iostream和( )。
A.fstream
B.ostream
C.iostream
D.cin
第5题:
试题三(共 15 分)
阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
第6题:
阅读以下说明和Visual Basic代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某绘图系统定义了一个抽象类IShape,现有三个类CPoint、CLine和CCircle,它们都具有IShape界面。相应的类图关系如图7-1所示。
已知某第三方库已经提供了XCircle类,且完全满足CCircle图元显示时所需的功能。代码7-1是抽象类IShape的类模块内容,代码7-2实现了类CCircle的IShape界面,并使用了XCircle提供的显示功能。
XCimle提供的显示功能方法接口为displayIt。
【代码7-1】
Public Color As Long
Sub draw()
'方法体不包括可执行语句
End Sub
Sub move(stepx As Single,stepy As Smgle)
'方法体不包括可执行语句
End Sub
【代码7-2】
(1)
Private color As Long
… ‘其他定义省略
Private bridged As (2)
Private Sub Class_Initialize ( )
Set bridged=(3)
End Sub
Private Property (4) ( )As Long
IShape_Color = color
End Property
Private Property (5) (ByVal newColor As Long)
color=newColor
End Property
Private Sub IShape_draw ( ) '使用XCirele提供的显示功能
(6)
End Sub
Private Sub IShape_move (stepx As Single, stepy As Single)
… '省略描述
End Sub
第7题:
C++定义了类库实现数据的输入和输出,______为根基类。
第8题:
第9题:
第10题:
第11题:
第12题:
fstream
iostream
ostream
cout
第13题:
阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表5-l所示。
为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图5—1所示。
图5-l中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly( )和takeOff( )分别表示不同飞机都具有飞行特征和起飞特征;类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行行为与起飞行为;类SubSonicFly与SuperSonicFly分别捕述亚音速飞行和超音速飞行的行为;类Verti calTakeOff与LongDistanceTakeoff分别描述垂直起飞与长距离起飞的行为。
【C++代码】
include
using namespace std;
class FlyBehavior{
public:virtual void fly( )=0;
};
class SubSonicFly:public FlyBehavior{
public: void fly( ){cout<<"亚音速飞行! "<
第14题:
阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
C++标准模板库中提供了vector模板类,可作为动态数组使用,并可容纳任意数据类型,其所属的命名空间为std。vector模板类的部分方法说明如下表所示:
【C++代码】
include <iostream>
include <vector>
using namespace (1);
typedef vector< (2) > INTVECTOR;
const int ARRAY_SIZE = 6;
void ShowVector (INTVECTOR &theVector);
int main() {
INTVECTOR theVector;
// 初始化 theVector, 将theVector的元素依次设置为0至5
for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++}
theVector.push_back((3));
ShowVector(theVector); // 依次输出theVector中的元素
theVector.erase (theVector.begin () + 3};
ShowVector(theVector);
}
void ShowVector (INTVECTOR &theVector) {
if (theVector.empty ()) {
cout << "theVector is empty." << endl; return;
}
INTVECTOR::iterator (4);
for (theIterator=theVector.begin(); theIterator !=theVector.end(); theIterator++) {
cout << *theIterator;
if (theIterator != theVector.end()-1) cout << ", ";
}
cout << end1;
}
该程序运行后的输出结果为:
0,1,2,3,4,5
(5)
第15题:
阅读以下说明和JAVA 2代码,将应填入(n)处的字句写在对应栏内。
[说明]
以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。
[JAVA代码]
//定义自己的异常类
class CCircleException extends Exception
{
}
// 定义类 CCircle
class CCircle
{
private double radius;
public void setRadius ( double r ) (1)
{
if ( r<0 ) {
(2)
}
else
(3)
}
Public void show ( ) {
System. out. println ( "area="+3.14*radius*radius );
}
}
public class ciusample
{
public static void main ( String args[] )
{
CCircle cir=new CCircle( );
(4) {
cir. setRadius ( -2.0 )
}
(5)
{
System. out. println ( e+" throwed" ) ;
}
cir. show( ) ;
}
}
第16题:
阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都
有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌
灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式
的类图如图5-1所示。
【c++代码】
}
第17题:
试题六(共 15 分)
阅读以下说明和 C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
C++标准模板库中提供了 vector 模板类,可作为动态数组使用,并可容纳任意数据类型,其所属的命名空间为 std。vector模板类的部分方法说明如下表所示:
[C++代码]
include <iostream>
include <vector>
using namespace (1) ;
typedef vector< (2) > INTVECTOR;
const int ARRAY_SIZE = 6;
void ShowVector(INTVECTOR &theVector);
int main(){
INTVECTOR theVector;
// 初始化 theVector,将 theVector的元素依次设置为 0 至 5
for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++)
theVector.push_back( (3) );
ShowVector(theVector); // 依次输出 theVector中的元素
theVector.erase(theVector.begin() + 3);
ShowVector(theVector);
}
void ShowVector(INTVECTOR &theVector) {
if (theVector.empty()) {
cout << "theVector is empty." << endl; return;
}
INTVECTOR::iterator (4) ;
for (theIterator = theVector.begin(); theIterator != theVector.end(); theIterator++){
cout << *theIterator;
if (theIterator != theVector.end()-1) cout << ", ";
}
cout << endl;
}
该程序运行后的输出结果为:
0, 1, 2, 3, 4, 5
(5)
第18题:
阅读以下说明和c++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
c++标准模板库中提供了map模板类,该模板类可以表示多个“键一值”对的集合,其中键的作用与普通数组中的索引相当,而值用作待存储和检索的数据。此外,c++模板库还提供了pair模板类,该类可以表示一个“键-值”对。pair对象包含两个属性:first和second,其中first表示“键-值”中的“键”,而Second表示“键-值”中的“值”。map类提供了insert方法和find方法,用于插入和查找信息。应用时,将一个pair。对象插入(insert)到map对象后,根据“键”在map对象中进行查找(find),即可获得一个指向pair对象的迭代器。下面的c++代码中使用了map和pair模板类,将编号为1001、1002、1003的员工信息插入到map对象中,然后输入一个指定的员工编号,通过员工编号来获取员工的基本信息。员工编号为整型编码,员工的基本信息定义为类employee。map对象与员工对象之间的关系及存储结构如图5—1所示。
【c++代码】
include
include
include
using namespace std;
class employee {(1) :
employee(string name,string phoneNumber,string address){
this->name=name;
this->phoneNumber=phoneNumber ;
this->address=address;
}
string name;
string phoneNumber;
string address;
);
int main()
{
mapemployeeMap;
typedef pair>employeeNo; //从标准输入获得员工编号
map::const_iterator it;
it= (5) .find(employeeNo); //根据员工编号查找员工信息
if(it==employeeMap.end()){
cout<first<second一>nafae(phoneNumber<second->address<
第19题:
(a)智能网概念模型中分布功能平面模型如下图所示,请根据此图将应填入(n)处的 字句写在答题纸的对应栏内。
第20题:
第21题:
第22题:
第23题: