(2)创建学生结构体,包含(学号,姓名,性别,年龄,总分),最多可以存放100名学生信息。 ( a )录入10名学生信息,输出; ( b )按照总分从高到低排序,输出;( c )再录入一名学生信息,插入到合 适位置,保持总分顺序。
时间: 2024-09-11 11:04:41 浏览: 87
首先,我们需要定义一个学生结构体(在C语言中称为结构体,在其他语言中可能称为类或对象),如下所示:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
#define NAME_LENGTH 50
// 定义学生结构体
typedef struct {
int student_id; // 学号
char name[NAME_LENGTH]; // 姓名
char gender; // 性别,'M'表示男性,'F'表示女性
int age; // 年龄
int total_score; // 总分
} Student;
// 函数声明
void inputStudents(Student students[], int count);
void printStudents(const Student students[], int count);
void sortStudentsByTotalScore(Student students[], int count);
void insertStudentAndSort(Student students[], int *count, Student new_student);
int main() {
Student students[MAX_STUDENTS]; // 存放最多100名学生的数组
int count = 0; // 当前学生数量
// (a) 录入10名学生信息
inputStudents(students, 10);
// 输出学生信息
printStudents(students, 10);
// (b) 按照总分从高到低排序,输出
sortStudentsByTotalScore(students, 10);
printStudents(students, 10);
// (c) 再录入一名学生信息,并插入到合适位置
Student new_student;
new_student.student_id = 11;
strcpy(new_student.name, "张三");
new_student.gender = 'M';
new_student.age = 20;
new_student.total_score = 290;
insertStudentAndSort(students, &count, new_student);
printStudents(students, count);
return 0;
}
// 录入学生信息的函数实现
void inputStudents(Student students[], int count) {
for (int i = 0; i < count; i++) {
printf("请输入第%d名学生的学号、姓名、性别、年龄、总分:\n", i + 1);
scanf("%d %s %c %d %d", &students[i].student_id, students[i].name, &students[i].gender, &students[i].age, &students[i].total_score);
}
}
// 打印学生信息的函数实现
void printStudents(const Student students[], int count) {
printf("\n学生信息:\n");
for (int i = 0; i < count; i++) {
printf("学号:%d, 姓名:%s, 性别:%c, 年龄:%d, 总分:%d\n",
students[i].student_id, students[i].name, students[i].gender, students[i].age, students[i].total_score);
}
}
// 排序学生信息的函数实现(根据总分从高到低)
void sortStudentsByTotalScore(Student students[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (students[j].total_score < students[j + 1].total_score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
// 插入新学生信息并排序的函数实现
void insertStudentAndSort(Student students[], int *count, Student new_student) {
students[*count] = new_student;
(*count)++;
sortStudentsByTotalScore(students, *count);
}
```
在这段代码中,我们首先定义了一个`Student`结构体,然后通过函数分别实现了录入学生信息、打印学生信息、按总分排序学生信息以及插入新学生信息并保持总分顺序的功能。注意,在插入新学生信息后,我们需要对整个数组重新进行排序,以确保总分的顺序性。
阅读全文