C语言假设班级有10名学生,从键盘输入这10名学生的成绩,从大到小排序,具体要求如下
时间: 2024-10-25 18:13:22 浏览: 10
C语言大作业-学生成绩管理系统
5星 · 资源好评率100%
在C语言中,我们可以使用数组来存储学生的成绩,并结合冒泡排序算法来实现从大到小的排序。以下是一个简单的步骤描述:
1. 定义一个结构体 `Student`,包含学生名字和成绩两个字段:
```c
struct Student {
char name[20];
float score;
};
```
2. 创建一个 `Student` 类型的数组,用于存放10名学生的数据:
```c
struct Student students[10];
```
3. 使用 `for` 循环从键盘读取每个学生的姓名和成绩:
```c
for (int i = 0; i < 10; i++) {
printf("请输入学生 %d 的姓名:", i + 1);
fgets(students[i].name, sizeof(students[i].name), stdin); // 去掉换行符
printf("请输入学生 %d 的成绩:", i + 1);
scanf("%f", &students[i].score);
}
```
4. 冒泡排序函数,根据 `score` 字段降序排列数组:
```c
void bubbleSort(struct Student arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j].score < arr[j + 1].score) {
// 交换元素
struct Student temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
5. 调用 `bubbleSort` 函数并打印排序后的成绩:
```c
bubbleSort(students, 10);
for (int i = 0; i < 10; i++) {
printf("%s: %.2f\n", students[i].name, students[i].score);
}
```
阅读全文