c语言分数相同按照学号的升序排序
时间: 2023-08-11 17:14:30 浏览: 133
C语言小项目
好的,您需要对一组学生的成绩进行排序,如果成绩相同则按照学号的升序排序。那么您可以使用冒泡排序算法来实现。具体步骤如下:
1. 定义一个结构体来存储每个学生的信息,包括学号和成绩。
2. 创建一个数组来存储所有学生的信息。
3. 使用冒泡排序算法对数组进行排序。在比较两个学生的成绩时,如果成绩相同,就比较他们的学号,按照学号的升序排序。
4. 输出排序后的结果。
下面是示例代码:
```c
#include <stdio.h>
struct student {
int id;
int score;
};
void bubble_sort(struct student arr[], int n) {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j].score == arr[j+1].score && arr[j].id > arr[j+1].id) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
else if (arr[j].score < arr[j+1].score) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
struct student arr[5] = {{101, 80}, {102, 90}, {103, 70}, {104, 90}, {105, 80}};
int n = 5;
int i;
printf("排序前的数组: \n");
for (i = 0; i < n; i++) {
printf("学号: %d, 成绩: %d\n", arr[i].id, arr[i].score);
}
bubble_sort(arr, n);
printf("排序后的数组: \n");
for (i = 0; i < n; i++) {
printf("学号: %d, 成绩: %d\n", arr[i].id, arr[i].score);
}
return 0;
}
```
输出结果为:
```
排序前的数组:
学号: 101, 成绩: 80
学号: 102, 成绩: 90
学号: 103, 成绩: 70
学号: 104, 成绩: 90
学号: 105, 成绩: 80
排序后的数组:
学号: 103, 成绩: 70
学号: 101, 成绩: 80
学号: 105, 成绩: 80
学号: 102, 成绩: 90
学号: 104, 成绩: 90
```
阅读全文