有一串打乱的成绩,现要求你把他们从低到高排列。
输入
每一行为姓名和成绩
以#作为输入结束标志
输出
输出排序后的结果
样例输入
LI 95
ZHAO 80
SUN 85
JIN 60
QIAN 70
WANG 90
ZHAN 85
#
样例输出
JIN 60
QIAN 70
ZHAO 80
SUN 85
ZHAN 85
WANG 90
LI 95
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct Student{
char name[20];
float score;
} Student;
int input(Student *st);
void print(Student *st, int n);
void sort(Student *st, int n);
int main()
{
Student * stu;
int n;
stu = (Student *)malloc(1000 * sizeof(Student));
while ((n = input(stu)) != -1)
{
sort(stu, n);
print(stu, n);
}
}
int input(Student *st)
{
int i;
for (i = 0;; i++)
{
if(scanf("%s", st[i].name) == EOF)
{
return -1;
}
else if (st[i].name[0] != '#')
{
scanf("%f", &st[i].score);
}
else
{
break;
}
}
return i;
}
void print(Student *st, int n)
{
Student *p;
for (p=st; p<st+n; printf("%s %.0f\n",p->name, p->score), p++);
}
void sort(Student *st, int n)
{
int i, j;
Student temp;
for(i = 0;i < n - 1;i++)
{
for(j = 0;j<=n-2-i;j++)
{
if(st[j].score > st[j+1].score)
{
temp = st[j];
st[j] = st[j+1];
st[j+1] = temp;
}
}
}
}