比对结构体中的成绩,由高到低输出\n\n有n个学生的信息(学号、姓名、成绩),要求按照成绩的高低输出各学生的信息\n{{10101,\"zhang\",78},{10103,\"wang\",98.5},{1010
时间: 2023-04-23 08:06:10 浏览: 93
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
3,\"li\",85},{10104,\"zhao\",73},{10102,\"chen\",92.5}}
可以使用冒泡排序或选择排序来对结构体中的成绩进行排序,然后按照排序后的顺序输出每个学生的信息。具体实现方法可以参考以下代码:
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT 100
typedef struct {
int id;
char name[20];
float score;
} Student;
void bubbleSort(Student students[], int n) {
int i, j;
Student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
void selectionSort(Student students[], int n) {
int i, j, maxIndex;
Student temp;
for (i = 0; i < n - 1; i++) {
maxIndex = i;
for (j = i + 1; j < n; j++) {
if (students[j].score > students[maxIndex].score) {
maxIndex = j;
}
}
if (maxIndex != i) {
temp = students[i];
students[i] = students[maxIndex];
students[maxIndex] = temp;
}
}
}
int main() {
int n, i;
Student students[MAX_STUDENT];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入每个学生的信息(学号、姓名、成绩):\n");
for (i = 0; i < n; i++) {
scanf("%d %s %f", &students[i].id, students[i].name, &students[i].score);
}
// 使用冒泡排序对成绩进行排序
bubbleSort(students, n);
// 使用选择排序对成绩进行排序
// selectionSort(students, n);
printf("按照成绩从高到低输出各学生的信息:\n");
for (i = 0; i < n; i++) {
printf("%d %s %.1f\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
阅读全文