首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 【说明】 某超市集团为发展业务向社会公开招聘N个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 【说明】 某超市集团为发展业务向社会公开招聘N个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该
admin
2009-02-15
68
问题
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。
【说明】
某超市集团为发展业务向社会公开招聘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
.count = 0;
rz
.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");
}
选项
答案
(1)q=q->next或q=v->next或其等价的代码形式 (2)*p=u或其等价的代码形式 (3)v->next=u或其等价的代码形式 (4)rz[i].1mt (5)insert(&head,p) (6)rz[p-,[p->zi)].1mt或其等价的代码形式 (7)p->zi++或p->zi=1,或其等价的代码形式
解析
这是一道要求读者掌握队列应用的程序设计题。本题的解答思路如下。
该C程序由主函数main、打印函数print及表元插入函数insert组成。主函数main首先打开数据文件,读入各工种需招聘的人数并统计总招聘人数。再读入应聘者信息,并调用函数insert按成绩排队,应聘者信息全部读入后,按照第一志愿录取。如果不能按照第一志愿录取招聘者,则将其成绩扣去5分,按照第二志愿录取。最后输出各工种招聘结果。
函数insert的功能是根据指针u所指单元的排队成绩,将此表元插入队列。p为指向队列首的指针。 (1)空缺处在此函数的for循环中,由队首开始查找,每次需要保存指向当前表元的指针,并更改指向当前表元的指针,(1)空缺处之前的语句“v=q”是保存指向当前表元的指针,因此该空缺处所填入的更改指向当前表元指针的语句是“q=q->next(或q=v->next)”或其等价的代码形式。
当找到排队成绩小于u所指表元或已查找至队尾时,就要将u所指表元插入队列。如果此表元需插在队首,则需更改队首的指针,即(2)空缺处所填写的内容是“*p=u”或其等价代码形式:否则,需要根拥保存的前驱表元指针来进行插入操作,即(3)空缺处所填写的内容是“v->next=u”或其等价的代码形式。
主函数main首先将各丁种录取队列设为空队列,并统计总招聘人数。(4)空缺处所在的语句是统计总招聘人数,方法为招聘各工种人数进行累加,因此(4)空缺处所填写的内容是“rz
.1mt”。
(5)空缺处所在的for循环功能是:读入应聘者信息,形成表元,并按成绩插入队列。其中,插入是通过调用函数insert实现的,因此(5)空缺处所填入的内容是“insert(&head,p)”。
形成队列成绩后,开始按成绩和志愿决定聘用者。如果当前应聘者的志愿工种未招满,则聘用此应聘者,并将此工种已聘用人数加1,且将此聘用者信息加入工种录取队列。(6)空缺处所在判断条件的功能是:判断志愿工种是否己招满。如果志愿工种己招满,则根据此志愿是否是第一志愿来进一步划分。如果是第一志愿,则将成绩扣5分,再插入应聘者队列,考虑第二志愿;否则将此应聘者移入不录取队列。因此(6)空缺处所填写的内容是“rz[p->[p->zi]].1mt”。
(7)空缺处所填入语句的功能是,将志愿工种置为第二工种,应填入“p->zi++”或“p->zi=1”或其他等价的代码形式。
转载请注明原文地址:https://kaotiyun.com/show/1EjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
下列关于Word文本格式设置的叙述中,不正确的是(35)。
为查看Windows系统当前正在运行哪些应用程序或进程,可用(43)组合键实现。
____________是微机最基本最重要的部件之一,其类型和档次决定着整个微机系统的类型和档次,其性能影响着整个微机系统的性能。CPU模块就插在其上面。
数据展现常需要图表化。美化图表的原则不包括()。
设有关系R、S、T如下所示,则(55)________________。
在Word2007文档编辑时,使用(39)________________选项卡中的“分隔符”命令,可以在文档中指定位置强行分页。
Word2010中的格式刷可用于复制段落的格式,若要将选中的当前段落格式重复应用多次,应()。
设10个数{Xi|i=1,10)的平均值为a,则{10Xi+1|i=1,10)的平均值为(5)。
打开DOC文档48.doc,有如下表格,欲在空白单元格中计算出整行其他四个单元格的数值之和,应在空白单元格中插入公式(48)。
认真阅读下列说明,根据网页显示的效果图,并解释其中用下划线标出的语句的含义。[说明]某在线娱乐公司用ASP实现了一个用于在线点播电影的网页,主页文件名为“index.asp”,网页运行的效果如下图所示。程序中使用的Acess数据表结构如下
随机试题
A.足三里、三阴交B.外关、风池C.太溪、行间D.内庭、二间除主穴外风火牙痛宜配
下列不是X线管结构参数的是
热压灭菌的灭菌条件是
(2013年)甲国某航空公司国际航班在乙国领空被乙国某公民劫持,后乙国将该公民控制,并拒绝了甲国的引渡请求。两国均为1971年《关于制止危害民用航空安全的非法行为的公约》等三个国际民航安全公约缔约国。对此,下列哪一说法是正确的?()
某住宅小区通过出让方式取得了土地使用权,其使用的最高年限为()。
转化后进生首先要做的是()。
选项四个图形中,只有一个是由题干四个图形拼合而成的,请选出来。
以下属于改良运动的是()
A、 B、 C、 A
DonMagazineForthelatestsummerfashions,pickuptheMarchissueofDonMagazine.You’llfind:101Swimsuitsthatmakeyoul
最新回复
(
0
)