加强法官检查官队伍:某软件公司招聘程序题,请大家看看答案是什么?谢谢

来源:百度文库 编辑:中科新闻网 时间:2024/05/10 04:18:36
某集团公司为发展生产向社会公开招聘 M 个工种的工作人员,每个工种各有不同的编号(1 至 M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩从高分至低分的顺序进行排队录取。公司的录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去 5 分后,重新排队,并按其第二志愿考虑录取。
程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都作了录取处理。
程序中,类型 STU 包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组 rz[]的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。
#include
#define M 20
#define EDMARK 5
typedef struct stu {
int no, total, z[2], sortm, zi;
struct stu *next;
} STU;
struct rzmode {
int lmt , count;
STU *next;
} rz[M];
STU *head = NULL, *over = NULL;
int all;
FILE *fp;
char dataf [ ] = ”pp.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, z1, z2 ;
STU *p, *v, *q;
fp = fopen(dataf,”r”);
if (fp == NULL)
{
printf (”Can't open file %s.\n”,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,&z1,&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”);
}

什么东东?