问题描述:
输入几个学生的姓名和成绩,要求分数相同时顺序相对输入时不变(即要求稳定排序),进行排序后输出。
样例输入:
如输入4个学生成绩表如下:
Jack 70
Petter 96
Joy 70
Lili 89
样例输出:
Petter 96
Lili 89
Jack 70
Joy 70
代码展示:
1 #include<stdio.h>
2 struct Student{
3 char name[20];
4 int grade;
5 }stu[4];
6 int main(){
7 Student stuTemp;
8 int i,j;
9 for(i=0; i<4; i++){
10 scanf("%s %d",&stu[i].name, &stu[i].grade);
11 }
12 for(i=0;i<4;i++){ //冒泡排序
13 int flag = 0;
14 for(j=1;j<4-i;j++){
15 if(stu[j].grade > stu[j-1].grade){
16 stuTemp = stu[j];
17 stu[j] = stu[j-1];
18 stu[j-1] = stuTemp;
19 flag = 1;
20 }
21 }
22 if(flag == 0){
23 break;
24 }
25 }
26 printf("成绩排序后的结果为:\n");
27 for(i=0;i<4;i++){
28 printf("%s的成绩:%d\n",stu[i].name, stu[i].grade);
29 }
30 return 0;
31 }
运行截图: