阅读以下应用程序说明和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[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; ver = 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'); }