有一份含有 n 个学生的名单,里面有每位学生的姓名、某门功课的成绩,请你按照成绩,从高到低重新输出该名单。
输入格式
第一行,一个整数 n,表示人的数量。N<50。
接下来的有效数据是 2∗n 行,每两行分别是一个人的姓名、成绩(成绩不重复)。
姓名程度不大于100,成绩为整数。
每两行之间用一个空行分隔。
输出格式
输出 2∗n行,表示按成绩排好的名单。
每两行仍然分别是一个人的姓名、成绩。
依然每两行之间用一个空行分隔。
输入样例
3
Kirisame Marisa
78
Yukari Yakumo
77
Hakurei Reimu
96
#include<stdio.h>
struct stu
{
char name[10];
int score;
};
void input(struct stu t[],int n)
{
int i;
for(i=0; i<n; i++)
{
scanf("%s",t[i].name);
scanf("%d",&t[i].score);
}
}
void sort(struct stu t[],int n)
{
int i,j;
for(i=0; i<n-1; i++)
for(j=0; j<n-1-i; j++)
if(t[j].score<t[j+1].score)
{
struct stu tem=t[j];
t[j]=t[j+1];
t[j+1]=tem;
}
}
void put(struct stu t[],int n)
{
int i;
for(i=0; i<n; i++)
{
printf(" 姓名:%s 成绩:%d\n",t[i].name,t[i].score);
}
}
int main()
{
struct stu t[10];
input(t,10);
sort(t,10);
put(t,10);
return 0;
}