c语言书写代码:定义30名学生信息包含成绩,姓名和学号,实际人数从键盘上输入: (1)采用交换法实现成绩从高到低排序,并输出每一个学生所有信息。
时间: 2024-11-09 11:25:57 浏览: 104
在C语言中,你可以使用数组来存储学生的个人信息,然后通过冒泡排序或者选择排序来实现成绩从高到低的排序。这里是一个基本的示例,假设我们使用结构体`Student`来存放学生的姓名、学号和成绩:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[50];
int student_id;
float score;
} Student;
void swap(Student *a, Student *b) {
// 交换两个学生的信息
char temp_name[50];
int temp_id;
float temp_score;
strcpy(temp_name, a->name);
temp_id = a->student_id;
temp_score = a->score;
a->name = b->name;
a->student_id = b->student_id;
a->score = b->score;
b->name = temp_name;
b->student_id = temp_id;
b->score = temp_score;
}
// 冒泡排序函数,从高分到低分
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) {
swap(&students[j], &students[j + 1]);
}
}
}
}
int main() {
int num_students;
printf("请输入学生总数:");
scanf("%d", &num_students);
// 创建学生数组并读取信息
Student students[num_students];
for (int i = 0; i < num_students; i++) {
printf("请输入学生 %d 的姓名、学号和成绩:\n", i + 1);
scanf("%s%d%f", 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);
}
return 0;
}
```
阅读全文