编写程序实现:有5个学生信息记录,每个记录包括学号 num、姓名name、成绩类型 type、成绩score。成绩类型以五分制采用字符形式(即A、B、C、D、E)。请按成绩从高到低的顺序输出学生信息,要求使用函数的形式封装各个功能。
时间: 2023-07-10 11:35:44 浏览: 81
好的,我可以为您提供一份实现上述功能的示例代码。
首先,我们需要定义一个结构体 `Student`,用于存储每个学生的信息。结构体包括四个成员变量:学号 `num`、姓名 `name`、成绩类型 `type`、成绩 `score`。
接着,我们需要定义一个函数 `input()`,用于输入每个学生的信息。函数中需要使用 `scanf()` 函数逐个输入每个学生的信息,并将它们存储在一个大小为 5 的 `Student` 数组中。
然后,我们需要定义一个函数 `sort()`,用于按照成绩从高到低的顺序对学生信息进行排序。函数中使用冒泡排序算法,按照成绩从高到低的顺序对学生信息进行排序。
最后,我们需要定义一个函数 `output()`,用于输出排序后的学生信息。函数中使用 `printf()` 函数逐个输出每个学生的信息。
下面是一份示例代码,供您参考:
```c
#include <stdio.h>
#define MAX_STUDENT_NUM 5
typedef struct {
int num;
char name[20];
char type;
int score;
} Student;
void input(Student students[]) {
printf("请输入 %d 个学生的信息:\n", MAX_STUDENT_NUM);
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
printf("学生 %d:\n", i+1);
printf("学号:");
scanf("%d", &students[i].num);
printf("姓名:");
scanf("%s", students[i].name);
printf("成绩类型:");
scanf(" %c", &students[i].type);
printf("成绩:");
scanf("%d", &students[i].score);
}
}
void sort(Student students[]) {
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
for (int j = 0; j < MAX_STUDENT_NUM-i-1; j++) {
if (students[j].score < students[j+1].score) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
void output(Student students[]) {
printf("学生信息如下:\n");
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
printf("学号:%d,姓名:%s,成绩类型:%c,成绩:%d\n", students[i].num, students[i].name, students[i].type, students[i].score);
}
}
int main() {
Student students[MAX_STUDENT_NUM];
input(students);
sort(students);
output(students);
return 0;
}
```
这段代码中,`Student` 结构体包括四个成员变量:学号 `num`、姓名 `name`、成绩类型 `type`、成绩 `score`。
`input()` 函数使用 `scanf()` 函数逐个输入每个学生的信息,并将它们存储在 `Student` 数组中。
`sort()` 函数使用冒泡排序算法,按照成绩从高到低的顺序对 `Student` 数组进行排序。
`output()` 函数使用 `printf()` 函数逐个输出每个学生的信息。
在 `main()` 函数中,我们先定义了一个大小为 5 的 `Student` 数组 `students`,然后依次调用 `input()`、`sort()`、`output()` 函数,实现了对学生信息的输入、排序和输出。
阅读全文