用c语言写代码 创建学生结构体,包含(学号,姓名,性别,年龄,总分),最多可以存放100名学生信息。 (a)录入10名学生信息,输出; (b)按照总分从高到低排序,输出; (c)再录入一名学生信息,插入到合适位置,保持总分顺序。
时间: 2024-09-17 15:07:05 浏览: 52
在C语言中,你可以使用`struct`来定义一个学生结构体,并利用数组或动态内存分配存储100名学生的数据。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
char sex[10]; // 性别
int age; // 年龄
float total_score; // 总分
} Student;
// 插入新学生到数组末尾
void insert(Student students[], int size, const Student* new_student) {
if (size == 100) {
printf("已满,无法插入更多学生。\n");
return;
}
students[size] = *new_student;
}
int main() {
Student students[100];
int i = 0;
// 录入10名学生信息
for (i = 0; i < 10 && i < 100; i++) {
printf("请输入第%d名学生的信息:\n", i+1);
scanf("%d %s %s %d %f", &students[i].id, students[i].name, students[i].sex, &students[i].age, &students[i].total_score);
printf("学生信息已录入:\n");
// 输出录入的学生信息
printf("学号:%d 姓名:%s 性别:%s 年龄:%d 总分:%f\n", students[i].id, students[i].name, students[i].sex, students[i].age, students[i].total_score);
}
// 按照总分从高到低排序并输出
qsort(students, i, sizeof(Student), compare_scores); // 自定义比较函数
printf("\n按总分从高到低排序后的学生信息:\n");
for (i = 0; i < i; i++) {
printf("学号:%d 姓名:%s 性别:%s 年龄:%d 总分:%f\n", students[i].id, students[i].name, students[i].sex, students[i].age, students[i].total_score);
}
// 再录入一名学生信息并插入到合适的位置
if (i < 100) {
Student new_student;
printf("请输入新学生的信息:\n");
scanf("%d %s %s %d %f", &new_student.id, new_student.name, new_student.sex, &new_student.age, &new_student.total_score);
// 使用自定义的插入方法
insert(students, i, &new_student);
printf("新学生信息插入成功!\n");
} else {
printf("已满,无法再插入学生。\n");
}
return 0;
}
// 比较函数,用于qsort排序
int compare_scores(const void* a, const void* b) {
const Student* s1 = (const Student*)a;
const Student* s2 = (const Student*)b;
return (s2->total_score > s1->total_score) - (s2->total_score < s1->total_score);
}
```
在这个例子中,我们首先创建了一个`Student`结构体,并定义了插入、录入和排序的方法。注意,`compare_scores`函数用于`qsort`对学生进行排序。
阅读全文