创建学生结构体,包含(学号,姓名,性别,年龄,总分),最多可以存放100名学生信息。 (a)录入3名学生信息,输出; (b)按照总分从高到低排序,输出;
时间: 2024-09-11 16:06:08 浏览: 62
在C语言中,可以通过定义结构体(`struct`)来创建学生信息的数据结构,然后通过数组来存储多个学生的信息。以下是一个简单的示例代码,用于实现题目中的要求:
```c
#include <stdio.h>
// 定义学生结构体
struct Student {
int id; // 学号
char name[50]; // 姓名
char gender; // 性别,'M' 表示男性,'F' 表示女性
int age; // 年龄
float totalScore; // 总分
};
// 学生数组,最多存放100名学生
#define MAX_STUDENTS 100
struct Student students[MAX_STUDENTS];
int studentCount = 0; // 当前学生数量
// 函数声明
void inputStudentInfo();
void printStudentInfo(struct Student *students, int count);
void sortStudentsByScore(struct Student *students, int count);
int main() {
// (a) 录入3名学生信息
inputStudentInfo();
printStudentInfo(students, studentCount);
// (b) 按照总分从高到低排序并输出
sortStudentsByScore(students, studentCount);
printStudentInfo(students, studentCount);
return 0;
}
// 录入学生信息的函数
void inputStudentInfo() {
for (int i = 0; i < 3; ++i) {
printf("请输入第%d名学生的学号、姓名、性别、年龄和总分:\n", i + 1);
scanf("%d %s %c %d %f", &students[studentCount].id, students[studentCount].name, &students[studentCount].gender, &students[studentCount].age, &students[studentCount].totalScore);
studentCount++;
}
}
// 打印学生信息的函数
void printStudentInfo(struct Student *students, int count) {
printf("\n学生信息列表:\n");
for (int i = 0; i < count; ++i) {
printf("学号:%d, 姓名:%s, 性别:%c, 年龄:%d, 总分:%.2f\n",
students[i].id, students[i].name, students[i].gender, students[i].age, students[i].totalScore);
}
}
// 按总分排序学生信息的函数(降序)
void sortStudentsByScore(struct Student *students, int count) {
for (int i = 0; i < count - 1; ++i) {
for (int j = 0; j < count - i - 1; ++j) {
if (students[j].totalScore < students[j + 1].totalScore) {
struct Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
```
在这段代码中,首先定义了一个`Student`结构体,包含了学号、姓名、性别、年龄和总分等信息。通过`inputStudentInfo`函数录入3名学生的信息,然后使用`printStudentInfo`函数打印学生信息。最后,`sortStudentsByScore`函数对学生数组进行降序排序,并再次使用`printStudentInfo`函数输出排序后的学生信息列表。
阅读全文