题目描述
输入n个学生的信息,依次包括姓名、C++成绩、数学成绩。
先按C++成绩的升序排列
如果C++成绩相同,再按数学成绩降序排列
输入
第一行有一个整数n,表示以下有n个学生信息将会输入。保证n不大于100。
输出
输出有n行,为排序后的学生信息
样例输入
3
Li 99 88
Wang 66 22
Liu 66 93
样例输出
Liu:66 93
Wang:66 22
Li:99 88
#include<stdio.h>
struct Student
{
char name[20];
int c;
int shuxue;
}a[105];
int main()
{
int n,i,j;
struct Student tmp;
struct Student tmp1;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%d%d",a[i].name,&a[i].c,&a[i].shuxue);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j].c>a[j+1].c)
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0;i<n-1;i++)
{
if(a[i].c==a[i+1].c)
{
if(a[i].shuxue<a[i+1].shuxue)
{
tmp1=a[i];
a[i]=a[i+1];
a[i+1]=tmp1;
}
}
}
for(i=0;i<n;i++)
{
printf("%s:%d %d\n",a[i].name,a[i].c,a[i].shuxue);
}
return 0;
}