问题 单项选择题

我国的档案利用工作曾出现过______个阶段。

A.2
B.3
C.4
D.5

答案

参考答案:B

填空题

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

[说明]

现欲构造一棵文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如图18-20所示。

[Java代码]

import Java.util.ArrayList;

import Java.util.List;

(1) class AbstractFile

protected String name;

public void printName()System.out.printin(name);

public abstract boolean addChild(AbstractFile file);

public abstract boolean removeChild(AbstractFile file);

public abstract List<AbstractFile>getChildren();

class File extends AbstractFile

public File(String name)this.name=name;

public boolean addChild(AbstractFile file)return false;

public boolean removeChild(AbstractFile file) return false;

public List<AbstractFile>getChildren()return (1)

class Foider extends AbstractFiie

private List<AbstractFile>childList;

public Folder(String name)

this.name=name;

this.childList=new ArrayList<AbstractFile>();

public boolean addChild(AbstractFile file) return childList.add(file);

public boolean removeChild(AbstractFile file) return childList.remove(file);

public (3) <AbstractFile>getChildren()return (4)

public class Client

public static void main(String[]args)

//构造一个树形的文件/目录结构

AbstractFile rootFoider=new Foider("C:\\");

AbstractFile compositeFolder=new Folder("composite");

AbstractFile windowsFoider=new Foider("windows");

AbstractFile file=new File("TeStCompoSite.java");

rootFolder.addChild(compositeFoider);

rootFoider.addChild(windowsFolder);

compositeFolder.addChild(file);

//打印目录文件树

printTree(rootFolder);

private static void printTree(AbstractFile ifile)

ifile.printName();

List<AbstractFile>children=ifile.getChildren();

if(children==null) return;

for(AbstractFile file:children)

(5)

该程序运行后输出结果为:

C:\

composite

TestComposite.java

Windows

(1)处填()。

问答题

【说明】
某超市集团为发展业务向社会公开招聘N个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该集团公司将按应聘者的成绩从高分至低分的顺序进行排队录取。具体录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿录取。
以下C程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都作了录取处理后跳出。
C程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组 rzl)的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。
【C程序】
#include
#define N 36
#define EDMARK 5
typedef struct stu
int no, total, z[2], sortm, zi;
struct stu *next;
STU;
struct rznode
int lmt, count;
STU *next;
rz [N];STU *head = NULL, *over = NULL;
int all
FILE *fp;
char dataf [ ] = "zp2008.dat" ;
print(STU *p)
for (;p!=NULL; p = p->next)
printf( "%d(%d) \t" , p->no, p->total
insert(STU **p, STU *u)
STU *v, *q;
for (q = *p;q != NULL; v = q , (1) )
if (q-> sortm < u->sortm)
break;
if ( q == *p)
(2) ;
else
(3) ;
u->next = q ;
main ( )
int zn, i, no, total, zl, z2 ;
STU *p, *v, *q;
fp = fopen(dataf, "r" );
if (fp == NULL)
printf ("Can’t open file %s.kn" ,dataf);
exit (0);

fscanf (fp, "%d" ,&zn);
for (all = 0, i = 1; i <= zn; i++)
fscanf (fp, "%d", &rz [ i ].lmt ;
rz[i].count = 0;
rz[i].next = NULL;
all += (4) ;

for (;;)
if (( fscanf(fp, "%d%d%d%d" ,&no,&total,&zl,&z2)) != 4 )
break;
p = ( STU *) malloc (sizeof (STU));
p->no = no;
p->total = p->sortm = total;
p->zi = 0;
p->z[0] = z1;
p->z[1] = z2;
(5) ;

fclose (fp);
for (;all && head != NULL;)
p = head;
head = head->next;
if (rz[p->z[p->zi]].count < (6) )
rz[p->z[p->zi]].count ++;
insert(&rz[p->z[p->zi]].next,p);
all--;
continue;

if (p->zi >= 1 )
p->next = over;
over = p;
continue;

p->sortm -= DEMARK;
(7) ;
insert(&head,p);

for (i = 1; i <= zn; i++ )
printf("%d:\n" ,i);
print( rz[i ].next);
printf(" \n");

printf( "over:\n" );
print(head);
print(over);
printf(" \n");