c 语言编写一个简单的学生成绩管理系统,要求如下: ① 可以输入学生的学号、姓名和数学成绩(百分制)(学生信息自定); ② 可以打印输出全体学生的信息; 可以根据学生的百分制数学成绩转换为5级等级(等级划分规则自定)成绩。
时间: 2024-09-06 20:01:58 浏览: 44
在C语言中编写一个简单的学生成绩管理系统,可以通过以下步骤来实现:
首先,定义一个结构体来存储学生的信息,包括学号、姓名和数学成绩。
```c
#include <stdio.h>
#include <string.h>
// 定义学生信息的结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
int mathScore; // 数学成绩
char grade; // 成绩等级
} Student;
// 函数声明
void inputStudentInfo(Student *s);
void printStudentInfo(Student *s, int count);
void convertToGrade(Student *s, int count);
int main() {
int studentCount;
printf("请输入学生数量: ");
scanf("%d", &studentCount); // 输入学生数量
Student *students = (Student *)malloc(studentCount * sizeof(Student)); // 动态分配学生数组
// 循环输入学生信息
for (int i = 0; i < studentCount; i++) {
printf("请输入第%d位学生的学号、姓名和数学成绩:\n", i + 1);
inputStudentInfo(&students[i]);
}
// 打印全体学生信息
printStudentInfo(students, studentCount);
// 转换成绩为等级并打印
convertToGrade(students, studentCount);
printStudentInfo(students, studentCount);
free(students); // 释放动态分配的内存
return 0;
}
// 输入学生信息的函数实现
void inputStudentInfo(Student *s) {
printf("学号: ");
scanf("%d", &s->id);
printf("姓名: ");
scanf("%s", s->name); // 注意:这里没有处理空格,实际使用时可能需要考虑更复杂的名字输入方式
printf("数学成绩: ");
scanf("%d", &s->mathScore);
}
// 打印学生信息的函数实现
void printStudentInfo(Student *s, int count) {
printf("\n全体学生信息如下:\n");
for (int i = 0; i < count; i++) {
printf("学号:%d, 姓名:%s, 数学成绩:%d\n", s[i].id, s[i].name, s[i].mathScore);
}
}
// 将成绩转换为等级的函数实现
void convertToGrade(Student *s, int count) {
for (int i = 0; i < count; i++) {
if (s[i].mathScore >= 90) {
s[i].grade = 'A';
} else if (s[i].mathScore >= 80) {
s[i].grade = 'B';
} else if (s[i].mathScore >= 70) {
s[i].grade = 'C';
} else if (s[i].mathScore >= 60) {
s[i].grade = 'D';
} else {
s[i].grade = 'E';
}
}
}
```
这个程序首先定义了一个`Student`结构体,包含学号、姓名、数学成绩和成绩等级。在`main`函数中,首先询问用户需要输入多少位学生的信息,并动态分配一个足够大的数组来存储这些信息。接着通过循环输入每位学生的信息,并通过`inputStudentInfo`函数保存到结构体数组中。输入完成后,调用`printStudentInfo`函数打印出所有学生的信息。然后调用`convertToGrade`函数将学生的成绩转换为等级,并再次打印所有学生的信息。
注意,为了简化示例代码,这里没有进行详细的输入错误检查和内存错误处理,实际使用中需要添加对用户输入的校验以及动态内存分配成功性的确认。
阅读全文