📄 8-2-11.c
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/
#include <stdio.h>
#include <malloc.h>
#define M 20
#define DEMARK 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 [ ] = "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 , q=q->next)
if ( q-> sortm < u->sortm) break;
if ( q == *p) *p=u;
else v->next = u;
u->next = q ;
}
void 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 += rz[i].lmt;
}
for (;;) {
if (( fscanf(fp, "%d%d%d%d",&no,&total,&z1,&z2)) != 4 )
break;
printf("No:%d Total:%d Z1:%d Z2:%d\n",no,total,z1,z2);
p = ( STU *) malloc (sizeof (STU));
p->no = no;
p->total = p->sortm = total;
p->zi = 0; p->z[0] = z1; p->z[1] = z2;
insert(&head,p);
}
fclose (fp);
for (;all && head != NULL;) {
p = head; head = head->next;
if (rz[p->z[p->zi]].count < rz[p->z[p->zi]].lmt) {
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; p->zi++;
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");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -