0051 输入几个学生的姓名和成绩,要求分数相同时顺序相对输入时不变(即要求稳定排序),进行排序后输出。

问题描述:

  输入几个学生的姓名和成绩,要求分数相同时顺序相对输入时不变(即要求稳定排序),进行排序后输出。

样例输入:
如输入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 } 

运行截图:

0051 输入几个学生的姓名和成绩,要求分数相同时顺序相对输入时不变(即要求稳定排序),进行排序后输出。

上一篇:动态规划基础——爬楼梯(Leetcode 70)


下一篇:70-100 C# winform helloworld