问题描述:
输入几个学生的姓名和成绩,要求分数相同时顺序相对输入时不变(即要求稳定排序),进行排序后输出。
样例输入:
如输入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 }
运行截图: