帮我用C语言编写一段程序你需要将一系列的学生期末考试信息进行存储(学生人数不会超过100)。每个学生的信息包括: 姓名(由 first name 和last name 两部分组成,例如Jingyu LI,first_name = "Jingyu" last_name = "LI") ; 学号(12 位数字组成,开头4位为2022、2021、2020); C语言成绩(一个大于等于零的整数); 重修信息(学号 2022.........为否,其余为是); GPA等级(A+, A, B+, B, C+, C, D, F )。 A+: 100-93; A: 92-85; B+: 84-80; B: 79-75; C+:74-70; C: 69-65; D: 64-60; F: <60. 其中,姓名,学号,成绩为输入数据,其余数据需要你计算。 另外,学号不符合规定的数据需要删除掉。
时间: 2024-03-08 14:49:33 浏览: 11
下面是一个简单的示例程序,可以实现你的需求,仅供参考:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char first_name[20]; // 姓
char last_name[20]; // 名
char id[13]; // 学号
int score; // 分数
int is_reexamine; // 是否重修
char gpa[3]; // GPA等级
};
// 计算GPA等级
void calc_gpa(struct Student *s) {
int score = s->score;
if (score >= 93) strcpy(s->gpa, "A+");
else if (score >= 85) strcpy(s->gpa, "A");
else if (score >= 80) strcpy(s->gpa, "B+");
else if (score >= 75) strcpy(s->gpa, "B");
else if (score >= 70) strcpy(s->gpa, "C+");
else if (score >= 65) strcpy(s->gpa, "C");
else if (score >= 60) strcpy(s->gpa, "D");
else strcpy(s->gpa, "F");
}
int main() {
struct Student students[100]; // 最多存储100个学生信息
int n; // 学生数量
// 输入学生数量
printf("请输入学生数量:");
scanf("%d", &n);
// 输入每个学生的信息
for (int i = 0; i < n; i++) {
struct Student s;
printf("请输入第 %d 个学生的信息:\n", i + 1);
printf(" 姓:");
scanf("%s", s.first_name);
printf(" 名:");
scanf("%s", s.last_name);
printf(" 学号:");
scanf("%s", s.id);
printf(" 分数:");
scanf("%d", &s.score);
printf(" 是否重修(0/1):");
scanf("%d", &s.is_reexamine);
// 判断学号是否合法
if (strncmp(s.id, "2022", 4) != 0 && strncmp(s.id, "2021", 4) != 0 && strncmp(s.id, "2020", 4) != 0) {
printf(" 学号不符合规定,已删除此学生信息。\n");
continue;
}
calc_gpa(&s);
students[i] = s;
}
// 输出每个学生的信息
printf("所有学生的信息如下:\n");
for (int i = 0; i < n; i++) {
struct Student s = students[i];
printf(" 姓名:%s %s\n", s.first_name, s.last_name);
printf(" 学号:%s\n", s.id);
printf(" 分数:%d\n", s.score);
printf(" 是否重修:%s\n", s.is_reexamine ? "是" : "否");
printf(" GPA等级:%s\n", s.gpa);
}
return 0;
}
```
在这个程序中,我们定义了一个 `Student` 结构体,用于存储每个学生的信息。在输入每个学生的信息时,我们使用 `calc_gpa` 函数计算出它的 GPA 等级,并将学生信息存储到 `students` 数组中。在输出每个学生的信息时,我们从 `students` 数组中读取每个学生的信息,并将其输出到屏幕上。