#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{struct team
{int rank;
char area[20];
int gold;
int silver;
int copper;
int total;
}s[99];
struct team_add
{int rank;
char area[20];
int gold;
int silver;
int copper;
int total;
}a[99];
FILE *fp;
int areas=0,news;
if((fp=fopen("奖牌榜练习1.txt","w"))==NULL)
{printf("打开文件失败\n");
exit(0);}
for(int d=1;d<=5;d++)
{printf("请输入各地区第%d天获得奖牌数,以井号结束:\n",d);
printf("地区 金 银 铜\n");
for(int i=0;i<99;i++)
{scanf("%s%d%d%d",a[i].area,&a[i].gold,&a[i].silver,&a[i].copper);
if(getchar()=='#')
{news=i+1;
break;}}
for(int i=0;i<news;i++)
{int p=0;
for(int j=0;j<areas;j++)
{if(strcmp(s[j].area,a[i].area)==0)
{p=1;
s[j].gold+=a[i].gold;
s[j].silver+=a[i].silver;
s[j].copper+=a[i].copper;}}
if(p==0)
{areas++;
strcpy(s[areas-1].area,a[i].area);
s[areas-1].gold=a[i].gold;
s[areas-1].silver=a[i].silver;
s[areas-1].copper=a[i].copper;}}
for(int i=0;i<areas;i++)
{s[i].rank=1;
s[i].total=s[i].gold+s[i].silver+s[i].copper;}
for(int i=0;i<areas;i++)
{for(int j=0;j<areas;j++)
{if((s[j].gold>s[i].gold)||
(s[j].gold==s[i].gold&&s[j].silver>s[i].silver)||
(s[j].gold==s[i].gold&&s[j].silver==s[i].silver&&s[j].copper>s[i].copper))
s[i].rank++;}}
fprintf(fp,"截至第%d天奖牌榜排名如下:\n",d);
fprintf(fp,"排名 地区 金 银 铜 总数\n");
for(int i=0;i<areas;i++)
{for(int j=0;j<areas;j++)
{if(s[j].rank==i+1)
fprintf(fp,"%4d %-10s %2d %2d %2d %4d\n",s[j].rank,s[j].area,s[j].gold,s[j].silver,s[j].copper,s[j].total);}}
rewind(fp);
printf("\n截至第%d天奖牌榜排名如下:\n",d);
printf("排名 地区 金 银 铜 总数\n");
for(int i=0;i<areas;i++)
{for(int j=0;j<areas;j++)
{if(s[j].rank==i+1)
{fscanf(fp,"%d%s%d%d%d%d",&s[j].rank,s[j].area,&s[j].gold,&s[j].silver,&s[j].copper,&s[j].total);
printf("%4d %-10s %2d %2d %2d %4d\n",s[j].rank,s[j].area,s[j].gold,s[j].silver,s[j].copper,s[j].total);}}}
}
fclose(fp);
}
#include <stdlib.h>
#include <string.h>
int main()
{struct team
{int rank;
char area[20];
int gold;
int silver;
int copper;
int total;
}s[99];
struct team_add
{int rank;
char area[20];
int gold;
int silver;
int copper;
int total;
}a[99];
FILE *fp;
int areas=0,news;
if((fp=fopen("奖牌榜练习1.txt","w"))==NULL)
{printf("打开文件失败\n");
exit(0);}
for(int d=1;d<=5;d++)
{printf("请输入各地区第%d天获得奖牌数,以井号结束:\n",d);
printf("地区 金 银 铜\n");
for(int i=0;i<99;i++)
{scanf("%s%d%d%d",a[i].area,&a[i].gold,&a[i].silver,&a[i].copper);
if(getchar()=='#')
{news=i+1;
break;}}
for(int i=0;i<news;i++)
{int p=0;
for(int j=0;j<areas;j++)
{if(strcmp(s[j].area,a[i].area)==0)
{p=1;
s[j].gold+=a[i].gold;
s[j].silver+=a[i].silver;
s[j].copper+=a[i].copper;}}
if(p==0)
{areas++;
strcpy(s[areas-1].area,a[i].area);
s[areas-1].gold=a[i].gold;
s[areas-1].silver=a[i].silver;
s[areas-1].copper=a[i].copper;}}
for(int i=0;i<areas;i++)
{s[i].rank=1;
s[i].total=s[i].gold+s[i].silver+s[i].copper;}
for(int i=0;i<areas;i++)
{for(int j=0;j<areas;j++)
{if((s[j].gold>s[i].gold)||
(s[j].gold==s[i].gold&&s[j].silver>s[i].silver)||
(s[j].gold==s[i].gold&&s[j].silver==s[i].silver&&s[j].copper>s[i].copper))
s[i].rank++;}}
fprintf(fp,"截至第%d天奖牌榜排名如下:\n",d);
fprintf(fp,"排名 地区 金 银 铜 总数\n");
for(int i=0;i<areas;i++)
{for(int j=0;j<areas;j++)
{if(s[j].rank==i+1)
fprintf(fp,"%4d %-10s %2d %2d %2d %4d\n",s[j].rank,s[j].area,s[j].gold,s[j].silver,s[j].copper,s[j].total);}}
rewind(fp);
printf("\n截至第%d天奖牌榜排名如下:\n",d);
printf("排名 地区 金 银 铜 总数\n");
for(int i=0;i<areas;i++)
{for(int j=0;j<areas;j++)
{if(s[j].rank==i+1)
{fscanf(fp,"%d%s%d%d%d%d",&s[j].rank,s[j].area,&s[j].gold,&s[j].silver,&s[j].copper,&s[j].total);
printf("%4d %-10s %2d %2d %2d %4d\n",s[j].rank,s[j].area,s[j].gold,s[j].silver,s[j].copper,s[j].total);}}}
}
fclose(fp);
}