问答题
【说明】 希赛教育集团公司为发展生产向社会公开招聘M个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩从高分至低分的顺序进行排队录取。公司的录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿考虑录取。 程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理。 程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组rz[]的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。 【程序】 #include<stdio.h> #include<malloc.h> #define M 20 #define PEMARK 5 typedef struct stu int no, total, z[2], sortm, zi; struct stu *next; STU; struct rzmode int Imt, count; STU *next; rz[M]; STU *head=NULL, *over=NULL; int all FILE *fp; char dataf[]="pp07.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);