1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h>//包含qsort函数的头文件 4 struct node 5 { 6char name[20],time[6]; 7int t;//时间 8int rank;//排名 9 }p[11];10 int cmp(const void *a,const void *b)11 {12struct node *c=(struct node *)a;13struct node *d=(struct node *)b;14if(c->t!=d->t)15 {return c->t-d->t;}//时间比较16else17 {return strcmp(c->name,d->name);}//名字字典排序18 }19 int main()20 {21int n,i,j,count,ranklist,flag,m;22count=0;23m=0;24while(scanf("%d",&n)!=EOF)25{26 if(n==0)27 {break;}28 if(m!=0)29 {printf("\n");}30 m++;31 for(i=0;i<n;i++)32 {33 getchar();34 scanf("%s%s",p[i].name,p[i].time);35 p[i].t=((p[i].time[0]-'0')*10+(p[i].time[1]-'0'))*60+(p[i].time[3]-'0')*10+(p[i].time[4]-'0');36 }37 qsort(p,n,sizeof(p[0]),cmp);38 39 printf("Case #%d\n",++count);40 ranklist=1;41 for(i=0;i<n;i++)//时间相同的运动员计数 42 {43 flag=i;// 标记时间相同的运动员的起始下标;44 while(p[i].t==p[i+1].t)45{i++;} 46 for(j=flag;j<=i;j++)47p[j].rank=ranklist;//给排名赋值048 ranklist+=j-flag;49 }50 for(i=0;i<n;i++)51 {52 printf("%s %d\n",p[i].name,p[i].rank);53 }54}55return 0;56 }57
1200字范文,内容丰富有趣,写作的好帮手!