使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。
时间: 2024-09-07 17:06:45 浏览: 105
学生成绩管理系统(C语言实现)
在编程中,结构体(Struct)是一种复杂数据类型,它允许你将不同类型的数据项组合在一起。为了储存学生信息并实现修改和删除操作,我们可以定义一个结构体来表示学生信息,并使用数组来存储最多50名学生的信息。以下是一个简单的示例实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 50
#define COURSES 3
// 定义学生信息结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
float scores[COURSES]; // 3门课程成绩
float total; // 总分
} Student;
// 学生信息数组
Student students[MAX_STUDENTS];
// 初始化学生信息
void initStudent(int index, int id, const char* name, float scores[]) {
students[index].id = id;
strncpy(students[index].name, name, sizeof(students[index].name));
students[index].total = 0;
for (int i = 0; i < COURSES; ++i) {
students[index].scores[i] = scores[i];
students[index].total += scores[i];
}
}
// 修改学生信息
void updateStudent(int index, int id, const char* name, float scores[]) {
if (index >= 0 && index < MAX_STUDENTS) {
students[index].id = id;
strncpy(students[index].name, name, sizeof(students[index].name));
students[index].total = 0;
for (int i = 0; i < COURSES; ++i) {
students[index].scores[i] = scores[i];
students[index].total += scores[i];
}
}
}
// 删除学生信息
void deleteStudent(int index) {
if (index >= 0 && index < MAX_STUDENTS) {
// 将最后一个学生信息移动到被删除的位置,然后减少学生总数
for (int i = index; i < MAX_STUDENTS - 1; ++i) {
students[i] = students[i + 1];
}
}
}
// 打印学生信息
void printStudent(const Student* s) {
printf("学号: %d\n", s->id);
printf("姓名: %s\n", s->name);
printf("课程成绩: %.2f, %.2f, %.2f\n", s->scores[0], s->scores[1], s->scores[2]);
printf("总分: %.2f\n", s->total);
}
int main() {
// 假设初始化学生信息
initStudent(0, 1, "张三", (float[]){85, 92, 78});
// 修改学生信息
float newScores[] = {88, 95, 81};
updateStudent(0, 1, "李四", newScores);
// 打印学生信息
printStudent(&students[0]);
// 删除学生信息
deleteStudent(0);
return 0;
}
```
在这个示例中,我们首先定义了一个`Student`结构体来存储学生的学号、姓名、成绩和总分。然后,我们创建了一个`students`数组来存储最多50名学生的信息,并实现了初始化、修改和删除学生信息的函数。
阅读全文