⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-2-11.c

📁 2005软件工程师考试下午编程题源代码
💻 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 + -