使用c语言:定义30名学生信息包含成绩,姓名和学号,实际人数从键盘上输入: (1)采用交换法实现成绩从高到低排序,并输出每一个学生所有信息。
时间: 2024-11-10 17:26:27 浏览: 88
在C语言中,你可以使用结构体(struct)来定义学生的信息,包括姓名、学号和成绩。为了实现成绩从高到低的排序并输出学生信息,可以使用冒泡排序算法。以下是简单的步骤:
首先,定义一个名为`Student`的结构体:
```c
#include <stdio.h>
#include <string.h>
// 定义学生信息结构
typedef struct {
char name[50];
int student_id;
float score;
} Student;
void bubbleSort(Student students[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - 1 - i; ++j) {
if (students[j].score > students[j + 1].score) {
// 交换学生信息
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
int num_students;
printf("请输入学生总数:");
scanf("%d", &num_students);
// 动态分配内存
Student* students = malloc(num_students * sizeof(Student));
if (students == NULL) {
printf("内存分配失败!\n");
return 1;
}
printf("请输入每个学生的姓名、学号和成绩:\n");
for (int i = 0; i < num_students; ++i) {
scanf("%s %d %.2f", students[i].name, &students[i].student_id, &students[i].score);
}
bubbleSort(students, num_students);
printf("按成绩从高到低排序的学生信息:\n");
for (int i = 0; i < num_students; ++i) {
printf("姓名:%s, 学号:%d, 成绩:%f\n", students[i].name, students[i].student_id, students[i].score);
}
// 释放内存
free(students);
return 0;
}
```
阅读全文