排序练习(初级篇)
排序练习2:
题目:
现在班级有 5 个人的名字和分数:huhu 5 分、 haha 3 分、 xixi 5 分、 hengheng 2 分和 gaoshou 8 分(满分是10分)。请编写一段程序,让计算机按照分数从高到低,输出他们的名字。
即应该输出 gao、 huhu、 xixi、 haha、hengheng。(题目来自《啊哈!算法》)
代码如下:
#include <stdio.h>
#define N 5
struct student //定义结构体,存储姓名和分数
{
char name[100];
int score;
};
int main(int argc, const char *argv[])
{
int n,i,j;
struct student a[N],t;
scanf("%d",&n);//输入班级人数
for(i = 0; i < n ; i++) //输入人名和分数
scanf("%s%d",a[i].name,&a[i].score);
for(i = 0; i < n; i++) //按成绩从高到低进行排序(冒泡排序)
{
for(j= 0; j < n-i; j++)
{
if(a[j].score< a[j+1].score) //交换
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(i = 0; i < n; i++) //输出人名
{
printf("%s",a[i].name);
printf("\n");
}
return 0;
}
运行结果如下: