能用c语言写一个学生成绩管理系统吗
时间: 2023-09-02 18:14:59 浏览: 46
当然可以,以下是一个简单的学生成绩管理系统的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最大学生数
#define MAX_NAME_LENGTH 20 // 姓名最大长度
#define MAX_SCORES 5 // 最大科目数
// 学生结构体
typedef struct {
char name[MAX_NAME_LENGTH];
int scores[MAX_SCORES];
} Student;
// 学生数据库结构体
typedef struct {
Student students[MAX_STUDENTS];
int num_students;
} StudentDatabase;
// 添加学生到数据库
void add_student(StudentDatabase *database, Student student) {
if (database->num_students >= MAX_STUDENTS) {
printf("Error: too many students\n");
return;
}
database->students[database->num_students++] = student;
}
// 查找最高分学生
Student get_student_with_highest_score(StudentDatabase database) {
int highest_score = 0;
Student top_student;
for (int i = 0; i < database.num_students; i++) {
int max_score = database.students[i].scores[0];
for (int j = 1; j < MAX_SCORES; j++) {
if (database.students[i].scores[j] > max_score) {
max_score = database.students[i].scores[j];
}
}
if (max_score > highest_score) {
highest_score = max_score;
top_student = database.students[i];
}
}
return top_student;
}
// 查找最低分学生
Student get_student_with_lowest_score(StudentDatabase database) {
int lowest_score = 100;
Student bottom_student;
for (int i = 0; i < database.num_students; i++) {
int min_score = database.students[i].scores[0];
for (int j = 1; j < MAX_SCORES; j++) {
if (database.students[i].scores[j] < min_score) {
min_score = database.students[i].scores[j];
}
}
if (min_score < lowest_score) {
lowest_score = min_score;
bottom_student = database.students[i];
}
}
return bottom_student;
}
// 计算班级平均分
float get_average_score(StudentDatabase database) {
int total_score = 0;
for (int i = 0; i < database.num_students; i++) {
int sum = 0;
for (int j = 0; j < MAX_SCORES; j++) {
sum += database.students[i].scores[j];
}
total_score += sum / MAX_SCORES;
}
return (float)total_score / database.num_students;
}
int main() {
StudentDatabase database = {0};
Student alice = {"Alice", {80, 90, 85}};
Student bob = {"Bob", {70, 60, 65}};
Student charlie = {"Charlie", {90, 95, 92}};
add_student(&database, alice);
add_student(&database, bob);
add_student(&database, charlie);
printf("Top student: %s\n", get_student_with_highest_score(database).name);
printf("Bottom student: %s\n", get_student_with_lowest_score(database).name);
printf("Class average score: %.2f\n", get_average_score(database));
return 0;
}
```
这个代码示例包括两个结构体,一个是 `Student`,用于存储每个学生的姓名和成绩;另一个是 `StudentDatabase`,用于管理学生信息。`StudentDatabase` 中包括添加学生、查找最高分和最低分学生、计算班级平均分等方法。在示例中,我们创建了三个学生并将它们添加到学生数据库中,然后输出最高分、最低分和班级平均分。