帮我写个c语言代码以下是要求:有五个学生信息记录,每个记录包括学号num,姓名name,成绩类型type,成绩score。成绩类型分为五分制或者百分制,五分制采用字符形式(A.B.C.D.E)百分制采用整数形式。按成绩从高到低的熟悉输出学生信息,要求使用函数的形式封装各个功能
时间: 2024-03-09 14:48:57 浏览: 60
好的,以下是C语言代码实现您的需求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 5
// 学生信息结构体
typedef struct {
int num; // 学号
char name[20]; // 姓名
char type; // 成绩类型(A.B.C.D.E或P)
int score; // 成绩
} student;
// 输入学生信息
void input(student *stu) {
printf("请输入学生信息:\n");
printf("学号:");
scanf("%d", &stu->num);
printf("姓名:");
scanf("%s", stu->name);
printf("成绩类型(A.B.C.D.E或P):");
scanf(" %c", &stu->type);
printf("成绩:");
scanf("%d", &stu->score);
}
// 按成绩从高到低排序
void sort(student *stu) {
int i, j;
student temp;
for (i = 0; i < MAX_STUDENT - 1; i++) {
for (j = 0; j < MAX_STUDENT - i - 1; j++) {
if (stu[j].score < stu[j + 1].score) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
// 输出学生信息
void output(student *stu) {
printf("学号\t姓名\t成绩类型\t成绩\n");
int i;
for (i = 0; i < MAX_STUDENT; i++) {
printf("%d\t%s\t%c\t\t%d\n", stu[i].num, stu[i].name, stu[i].type, stu[i].score);
}
}
int main() {
student stu[MAX_STUDENT];
int i;
for (i = 0; i < MAX_STUDENT; i++) {
input(&stu[i]);
}
sort(stu);
output(stu);
return 0;
}
```
代码中定义了一个 `student` 结构体,包含了学号、姓名、成绩类型和成绩四个属性。通过 `input` 函数输入学生信息,通过 `sort` 函数按照成绩从高到低排序,最后通过 `output` 函数输出学生信息。在 `main` 函数中,使用一个 `student` 类型的数组记录五个学生的信息,并按照要求输出。
阅读全文