题目内容 (请给出正确答案)
[主观题]

阅读下列算法说明和流程图1,回答问题1至问题3,将解答填入答题纸的对应栏内。 【算法说明】 某旅馆

阅读下列算法说明和流程图1,回答问题1至问题3,将解答填入答题纸的对应栏内。

【算法说明】

某旅馆共有N间客房。每间客房的房间号、房间等级、床位数以及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。房间的状态值为0(空闲)或1(占用)。客房是以房间(不是床位)为单位出租的。

本算法根据几个散客的要求预订一间空房。程序的输入为:人数M,房间等级要求R(R=0表示任意等级都可以)。程序的输出为:所有可供选择的房间号。

流程图1描述了该算法。

【问题1】

假设当前该旅馆各个房间的情况见表3。

阅读下列算法说明和流程图1,回答问题1至问题3,将解答填入答题纸的对应栏内。 【算法说明】 某旅馆阅

当输入M=4,R=0时,该算法的输出是什么?

【问题2】

如果等级为r的房间每人每天的住宿费为RATE(r),RATE为数组。为使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),流程图1的β所指框中的最后处应增加什么处理?

【问题3】

如果限制该算法最多输出K个可供选择的房间号,则在流程图1的α所指的判断框应改成什么处理?

【流程图1】(如图2所示)

阅读下列算法说明和流程图1,回答问题1至问题3,将解答填入答题纸的对应栏内。 【算法说明】 某旅馆阅

图2

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读下列算法说明和流程图1,回答问题1至问题3,将解答填入答…”相关的问题

第1题

试题七(共 15 分) 阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明

试题七(共 15 分)

阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】

已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批 5 万元以下(不包括 5 万元)的采购单,副董事长可以审批 5 万元至 10 万元(不包括 10 万元)的采购单,董事长可以审批 10 万元至 50 万元(不包括 50万元)的采购单,50 万元及以上的采购单就需要开会讨论决定。 采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图 7-1 所示

[Java 代码]

class PurchaseRequest {

public double Amount; // 一个采购的金额

public int Number; // 采购单编号

public String Purpose; // 采购目的

};

class Approver { // 审批者类

public Approver(){ successor = null; }

public void ProcessRequest(PurchaseRequest aRequest){

if (successor != null){ successor. (1) ; }

}

public void SetSuccessor(Approver aSuccesssor){ successor = aSuccesssor; }

private (2) successor;

};

class Congress extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){

if(aRequest.Amount >= 500000){ /* 决定是否审批的代码省略 */ }

else (3) .ProcessRequest(aRequest);

}

};

class Director extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

};

class President extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

};

class VicePresident extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

};

public class rs {

public static void main(String[] args) throws IOException {

Congress Meeting = new Congress();

VicePresident Sam = new VicePresident();

Director Larry = new Director();

President Tammy = new President();

// 构造责任链

Meeting.SetSuccessor(null); Sam.SetSuccessor( (4) );

Tammy.SetSuccessor( (5) ); Larry.SetSuccessor( (6) );

// 构造一采购审批请求

PurchaseRequest aRequest = new PurchaseRequest();

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

aRequest.Amount = Double.parseDouble(br.readLine());

(7) .ProcessRequest(aRequest); // 开始审批

return ;

}

}

点击查看答案

第2题

从下列的2道试题(试题五和试题六)中任选 1道解答。如果解答的试题数超过1道,则题号小的 1 道解答

有效。

试题五(共15分)

阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】

某公司的组织结构图如图5-1所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图5-2所示的类图。

其中 Company 为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和 FinanceDepartment分别表示人力资源部和财务部。

【C++代码】

include <iostream>

include <list>

include <string>

using namespace std;

class Company { // 抽象类

protected:

string name;

public:

Company(string name) { (1) = name; }

(2) ; // 增加子公司、办事处或部门

(3) ; // 删除子公司、办事处或部门

};

class ConcreteCompany : public Company {

private:

list< (4) > children; // 存储子公司、办事处或部门

public:

ConcreteCompany(string name) : Company(name) { }

void Add(Company* c) { (5) .push_back(c); }

void Delete(Company* c) { (6) .remove(c); }

};

class HRDepartment : public Company {

public:

HRDepartment(string name) : Company(name) {} // 其它代码省略

};

class FinanceDepartment : public Company {

public:

FinanceDepartment(string name) : Company(name) {} // 其它代码省略

};

void main() {

ConcreteCompany *root = new ComcreteCompany("北京总公司");

root->Add(new HRDepartment("总公司人力资源部"));

root->Add(new FinanceDepartment("总公司财务部"));

ConcreteCompany *comp = new ConcreteCompany("上海分公司");

comp->Add(new HRDepartment("上海分公司人力资源部"));

comp->Add(new FinanceDepartment("上海分公司财务部"));

(7) ;

ConcreteCompany *comp1 = new ConcreteCompany("南京办事处");

comp1->Add(new HRDepartment("南京办事处人力资源部"));

comp1->Add(new FinanceDepartment("南京办事处财务部"));

(8) ; //其它代码省略

}

点击查看答案

第3题

试题三(共15 分) 阅读下列说明和图,回答问题 l至问题 3,将解答填入答题纸的对应栏内。 【说明】 一

试题三(共15 分)

阅读下列说明和图,回答问题 l至问题 3,将解答填入答题纸的对应栏内。

【说明】

一个简单的图形编辑器提供给用户的基本操作包括:创建图形、创建元素、选择元素以及删除图形。图形编辑器的组成及其基本功能描述如下:

(1)图形由文本元素和图元元素构成,图元元素包括线条、矩形和椭圆。

(2)图形显示在工作空间中,一次只能显示一张图形(即当前图形,current)。

(3)编辑器提供了两种操作图形的工具:选择工具和创建工具。对图形进行操作时,一次只能使用一种工具(即当前活动工具,active)

①创建工具用于创建文本元素和图元元素。

②对于显示在工作空间中的图形,使用选择工具能够选定其中所包含的元素,可以选择一个元素,也可以同时选择多个元素。被选择的元素称为当前选中元素( selected)。

③每种元素都具有对应的控制点。拖拽选定元素的控制点,可以移动元素或者调整元素的大小。

现采用面向对象方法开发该图形编辑器,使用 UML 进行建模。构建出的用例图和类图分别如图3-1 和3-2 所示。

【问题1】 (4 分)

根据说明中的描述,给出图 3-1 中U1 和U2 所对应的用例,以及(1)和(2)处所对

应的关系。

【问题2】(8 分)

根据说明中的描述,给出图 3.2 中缺少的C1~C8 所对应的类名以及(3)~(6)

处所对应的多重度。

【问题3】(3 分)

图3-2 中的类图设计采用了桥接(Bridge)设计模式,请说明该模式的内涵。

点击查看答案

第4题

试题二(共15 分) 阅读下列说明,回答问题 l至问题3,将解答填入答题纸的对应栏内。 【说明】 某服装销

试题二(共15 分)

阅读下列说明,回答问题 l至问题3,将解答填入答题纸的对应栏内。

【说明】

某服装销售公司拟开发一套服装采购管理系统,以便对服装采购和库存进行管理。

【需求分析】

(1)采购系统需要维护服装信息及服装在仓库中的存放情况。服装信息主要包括:

服装编码、服装描述、服装类型、销售价格、尺码和面料,其中,服装类型为销售分类,服装按销售分类编码。仓库信息包括:仓库编码、仓库位置、仓库容量和库管员。系统记录库管员的库管员编码、姓名和级别。一个库管员可以管理多个仓库,每个仓库有一名库管员。一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。

(2)当库管员发现有一类或者多类服装缺货时,需要生成采购订单。一个采购订单可以包含多类服装。每类服装可由多个不同的供应商供应,但具有相同的服装编码。采购订单主要记录订单编码、订货日期和应到货日期,并详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。

(3)系统需记录每类服装的各个供应商信息和供应情况。供应商信息包括:供应商编码、供应商名称、地址、企业法人和联系电话。供应情况记录供应商所供应服装的服装类型和服装质量等级。一个供应商可以供应多类服装,一类服装可由多个供应商供应。库管员根据入库时的服装质量情况,设定或修改每个供应商所供应的每类服装的服装质量等级,作为后续采购服装时,选择供应商的参考标准。

【概念模型设计】

根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2.1 所示。

【逻辑结构设计】

根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):

库管员(库管员编码,姓名,级别)

仓库信息( (1) ,仓库位置,仓库容量)

服装(服装编码,服装描述,服装类型,尺码,面料,销售价格)

供应商(供应商编码,供应商名称,地址,联系电话,企业法人)

供应情况( (2) ,服装质量等级)

采购订单( (3) )

采购订单明细(____(4) )

【问题1】(6 分)

根据需求分析的描述,补充图 2.1 中的联系和联系的类型。

【问题2】(6 分)

根据补充完整的图2-1,将逻辑结构设计阶段生成的关系模式中的空(1)~(4)补充完整,并给出其主键(用下划线指出)。

【问题3】(3 分)

如果库管员定期需要轮流对所有仓库中的服装质量进行抽查,对每个仓库中的每一类被抽查服装需要记录一条抽查结果,并且需要记录抽查的时间和负责抽查的库管员。请根据该要求,对图2-1 进行修改,画出修改后的实体间联系和联系的类型。

点击查看答案

第5题

试题七(共 15 分) 阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 现

试题七(共 15 分)

阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】

现有 n(n < 1000)节火车车厢,顺序编号为 1,2,3,...,n,按编号连续依次从 A方向的铁轨驶入,从 B 方向铁轨驶出,一旦车厢进入车站(Station)就不能再回到 A方向的铁轨上;一旦车厢驶入 B 方向铁轨就不能再回到车站,如图 7-1所示,其中 Station 为栈结构,初始为空且最多能停放 1000 节车厢。

下面的 C 程序判断能否从 B 方向驶出预先指定的车厢序列,程序中使用了栈类

STACK,关于栈基本操作的函数原型说明如下:

void InitStack(STACK *s):初始化栈。

void Push(STACK *s,int e): 将一个整数压栈,栈中元素数目增 1。

void Pop(STACK *s):栈顶元素出栈,栈中元素数目减 1。

int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。

int IsEmpty(STACK s):若是空栈则返回 1,否则返回 0。

【C 程序】

include<stdio.h>

/*此处为栈类型及其基本操作的定义,省略*/

int main( ){

STACK station;

int state[1000];

int n; /*车厢数*/

int begin, i, j, maxNo; /*maxNo 为 A端正待入栈的车厢编号*/

printf("请输入车厢数: ");

scanf("%d",&n);

printf("请输入需要判断的车厢编号序列(以空格分隔) : ");

if (n < 1) return -1;

for (i = 0; i<n; i++) /* 读入需要驶出的车厢编号序列,存入数组 state[] */

scanf("%d",&state[i]);

(1) ; /*初始化栈*/

maxNo = 1;

for(i = 0; i < n; ){/*检查输出序列中的每个车厢号 state[i]是否能从栈中获取*/

if ( (2) ){/*当栈不为空时*/

if (state[i] == Top(station)){ /*栈顶车厢号等于被检查车厢号*/

printf("%d ",Top(station));

Pop(&station); i++;

}

else

if ( (3) ){

printf("error\n");

return 1;

}

else {

begin = (4) ;

for(j = begin+1; j<=state[i]; j++) {

Push(&station, j);

}

}

}

else { /*当栈为空时*/

begin = maxNo;

for(j = begin; j<=state[i]; j++){

Push(&station, j);

}

maxNo = (5) ;

}

}

printf("OK");

return 0;

}

点击查看答案

第6题

●试题二 阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。 【说明】 算法2-1

●试题二

阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。

【说明】

算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:

文件提示信息

(1+2)

abc)缺少对应左括号:第2行,第4列

((def)gx)缺少对应左括号:第3行,第10列

(((h)

ij)(k

(1ml)缺少对应右括号:第5行,第4列;第4行 ,第1列

在算法2-1中,stack为一整数栈。算法中各函数的说明见表4。

【算法2-1】

将栈stack置空,置EOF 为false

ch<-nextch();

while(not EOF)

k<-kind(CH);

if(k== (1) )

push( (2) );push( (3) );

elseif(k== (4) )

if(not empty())

pop();pop();

else

显示错误信息(缺少对应左括号或右括号);

显示行号row;显示列号col;

endif

endif

ch<-nextch();

endwhile

if(not empty())

显示错误信息(缺少对应左括号或右括号);

while(not empty())

row<-pop();col<-pop();

显示行号row;显示列号co1;

endwhile

endif

为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(char ch)的参数及其对应的返回值见表5。

【算法2-2】

将栈stack置空,置EOF为false

ch<-nextch();

while(not EOF)

k<-kind(ch);

if(k>0)

if(判断条件1)

push( (5) );push( (6) );push( (7) );

elseif(判断条件2and判断条件3)

pop();pop();pop();

else

显示错误信息(缺少对应左括号或右括号);

显示行号row;显示列号col;

endif

endif

ch<-nextch();

endwhile

if(not empty())

显示错误信息(缺少对应左括号或右括号);

while(not empty())

pop();rowpop();colpop();

显示行号row;显示列号col;

endwhile

endif

【问题1】

请将【算法2-1】和【算法2-2】中 (1) ~ (7) 处补充完整。

【问题2】

请从下面的选项中选择相应的判断逻辑填补【算法2-2】中的"判断条件1"至"判断条件3"。注意,若"判断条件2"的逻辑判断结果为假,就无需对"判断条件3"进行判断。

(a)字符是括号

(b)字符是左括号

(c)字符是右括号

(d)栈空

(e)栈不空

(f)栈顶元素表示的是与当前字符匹配的左括号

(g)栈顶元素表示的是与当前字符匹配的右括号

点击查看答案

第7题

●试题六 【说明】 下面是一个Applet程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示

●试题六

【说明】

下面是一个Applet程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示区和一个按钮,点击按钮,可以在文本区已有的文本基础上追加显示10条"Welcome to China"信息,并且文本区由滚动条控制文本的上下滚动。

程序运行结果如图4所示。

import javax.swing.*;

import javA.awt.*;

import javA.awt.event.*;

/*

<applet code="ex5_6.class" width=800 height=400 >

</applet>

图4

*/

public class ex5_6 extends JApplet {

JButton jb = new JButton("Add Text");

JTextPane jtp = new JTextPane();

public void init() {

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e){

for(int i = 1; i < 10; i++)

(1) + "Welcome to China!\n");

}

});

Container cp = (2) ;

cp.add(new JScrollPane(jtp));

cp.add( (3) );

}

public static void main(String[] args) {

ex5_6 obj5_6=new ex5_6();

String str = obj5_6.getClass().toString();

if(str.indexOf("class") !=-1)

str = str.substring (6) ;

JFrame. frm = new JFrame(str);

frm.addWindowListener(new (4) {

public void windowClosing(WindowEvent we) {

System.exit(0);

}

});

(5) .add(ex5_6);

frm.setSize(300, 400);

frm.setVisible(true);

}

}

ex5_6.html

<HTML>

<HEAD>

<TITLE>ex5_6</TITLE>

</HEAD>

<BODY>

<applet code="ex5_6.class" width=800 height=400 >

</applet>

</BODY>

</HTML>

点击查看答案

第8题

●试题二 阅读以下说明和流程图(如图2所示),回答问题1和问题2,将答案写在答卷的对应栏内。 【说明

●试题二

阅读以下说明和流程图(如图2所示),回答问题1和问题2,将答案写在答卷的对应栏内。

【说明】

本流程图实现从成绩文件生成学生成绩一览表。

某中学某年级的学生成绩数据(分数)登录在成绩文件F0中,其记录格式见表2:

由该成绩文件生成见表3的学生成绩一览表。生成的学生成绩一览表按学号升序排列。表中的名次是指该生相应课程在年级中的名次。

流程图中的顺序文件F0是学生成绩文件,F0文件经处理1处理后产生顺序文件F,然后经过处理2至处理4对文件F进行处理和更新。在处理5中,仅对文件F的纪录进行学生成绩一览表的编排输出,不进行排序和增加名次等处理。

【问题1】

流程图中文件F的纪录格式设定为见表4形式:

其中的①、②应定义为何种数据项?

【问题2】

简述处理2、处理3和处理4作何种处理,若有排序处理则需指明排序的键及序(升序或降序)。

【流程图】

图 3

点击查看答案

第9题

试题四(共15分) 阅读下列说明和C代码,回答问题1至问题 3,将解答写在答题纸的对应栏内。 【说明】 堆

试题四(共15分)

阅读下列说明和C代码,回答问题1至问题 3,将解答写在答题纸的对应栏内。

【说明】

堆数据结构定义如下:

在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称为小顶堆。堆常用完全二叉树表示,图4-1 是一个大顶堆的例子。

堆数据结构常用于优先队列中,以维护由一组元素构成的集合。对应于两类堆结构,优先队列也有最大优先队列和最小优先队列,其中最大优先队列采用大顶堆,最小优先队列采用小顶堆。以下考虑最大优先队列。

假设现已建好大顶堆A,且已经实现了调整堆的函数heapify(A, n, index)。

下面将C代码中需要完善的三个函数说明如下:

(1)heapMaximum(A):返回大顶堆A中的最大元素。

(2)heapExtractMax(A):去掉并返回大顶堆 A的最大元素,将最后一个元素“提前”到堆顶位置,并将剩余元素调整成大顶堆。

(3)maxHeapInsert(A, key):把元素key插入到大顶堆 A的最后位置,再将 A调整成大顶堆。

优先队列采用顺序存储方式,其存储结构定义如下:

define PARENT(i) i/2

typedef struct array{

int *int_array; //优先队列的存储空间首地址

int array_size; //优先队列的长度

int capacity; //优先队列存储空间的容量

} ARRAY;

【C代码】

(1)函数heapMaximum

int heapMaximum(ARRAY *A){ return (1) ; }

(2)函数heapExtractMax

int heapExtractMax(ARRAY *A){

int max;

max = A->int_array[0];

(2) ;

A->array_size --;

heapify(A,A->array_size,0); //将剩余元素调整成大顶堆

return max;

}

(3)函数maxHeapInsert

int maxHeapInsert(ARRAY *A,int key){

int i,*p;

if (A->array_size == A->capacity) { //存储空间的容量不够时扩充空间

p = (int*)realloc(A->int_array, A->capacity *2 * sizeof(int));

if (!p) return -1;

A->int_array = p;

A->capacity = 2 * A->capacity;

}

A->array_size ++;

i = (3) ;

while (i > 0 && (4) ){

A->int_array[i] = A->int_array[PARENT(i)];

i = PARENT(i);

}

(5) ;

return 0;

}

【问题 1】(10分)

根据以上说明和C代码,填充C代码中的空(1)~(5)。

【问题 2】(3分)

根据以上C代码,函数heapMaximum、heapExtractMax和 maxHeapInsert的时间复杂度的紧致上界分别为 (6) 、 (7) 和 (8) (用O 符号表示)。

【问题 3】(2分)

若将元素10插入到堆A =〈15, 13, 9, 5, 12, 8, 7, 4, 0, 6, 2, 1〉中,调用 maxHeapInsert函数进行操作,则新插入的元素在堆A中第 (9) 个位置(从 1 开始)。

点击查看答案

第10题

●试题二 阅读以下说明和流程图,回答问题1和问题2,将答案写在答卷的对应栏内。 【说明】 某供销系

●试题二

阅读以下说明和流程图,回答问题1和问题2,将答案写在答卷的对应栏内。

【说明】

某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采购单;当某配件的库存量大于或等于定购粮食,或者收到供应商的送货单并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。该供销系统的分层数据流图中部分数据流和文件的组成如下:

文件

配件库存=配件号+配件名+规格+数量+允许的最低库存量

数据流

订货单=配件号+配件名+规格+数量+顾客名+地址

提货单=订货单+金额

采购单=配件号+配件名+规格+数量+供应商名+地址

送货单=配件号+配件名+规格+数量+金额

假定顶层图(如图6所示)是正确的,"供应商"文件已由其他系统生成。

【问题1】

指出哪张图中的哪些文件可不必画出。

【问题2】

指出在哪些图中遗漏了哪些数据流。回答时使用如下形式之一:

(1) XX图中遗漏了XX加工(或文件)流向XX加工(或文件)的XX数据流;

(2) XX图中XX加工遗漏了XX输入(或输出)数据流。

【流程图】

顶层图

图6

0层图

图7

加工1子图

图8

加工2子图

图9

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信