给定3个人的比赛成绩,请确定冠亚季军。
输入格式:
三行,每行包含一个参赛者姓名和成绩,姓名与成绩由空格分隔。姓名中无空格。成绩是一个取值范围[0,100]的整数,数值最大者获金牌。在此,假定成绩不存在相同值。
输出格式:
按金银铜次序,输出三行,每行为“名次 姓名 成绩”。
输入样例:
张三 89
李四 78
王五 90
结尾无空行
输出样例:
金牌 王五 90
银牌 张三 89
铜牌 李四 78
结尾无空行
#include <stdio.h>
#define N 3
struct Player {
char name[100];
int grade;
};
void scan( struct Player * p );
void sort( struct Player * p );
void print( struct Player * p );
int main(void)
{
struct Player p[N];
scan( p );
sort( p );
print( p );
return 0;
}
void scan( struct Player * p )
{
int i;
for ( i=0; i<N; i++ ) {
scanf("%s%d", p[i].name, &p[i].grade);
}
}
void sort( struct Player * p )
{
int i, j, max;
struct Player temp;
for ( i=0; i<N-1; i++ ) {
max = i;
for ( j=i; j<N; j++ ) {
if ( p[j].grade>p[max].grade ) {
max = j;
}
}
if ( max!=i ) {
temp = p[i];
p[i] = p[max];
p[max] = temp;
}
}
}
void print( struct Player * p )
{
int i;
char n[N][100] = {"金牌", "银牌", "铜牌"};
for ( i=0; i<N; i++ ) {
printf("%s %s %d\n", n[i], p[i].name, p[i].grade);
}
}