使用结构体储存学生信息,包括学号,姓名,三门课程,成绩,总分要求,实现对学生信息修改和删除操作最多50名学生c代码
时间: 2025-06-09 17:03:38 浏览: 27
在C语言中,我们可以使用结构体(struct)来存储学生的相关信息,并通过数组或者动态内存分配来管理最多50名学生的信息。以下是一个简单的示例,展示了如何创建一个包含学号、姓名、课程成绩以及总分要求的学生结构体,以及提供添加、修改和删除学生信息的基本功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int student_id;
char name[50];
float course1_score, course2_score, course3_score;
float total_score; // 总分要求可以设置为常量或函数
} Student;
// 动态分配和释放内存
Student* create_student(int id, char* name, float scores[]) {
Student* new_student = (Student*)malloc(sizeof(Student));
if (!new_student) {
printf("Memory allocation failed.\n");
return NULL;
}
new_student->student_id = id;
strcpy(new_student->name, name);
new_student->course1_score = scores[0];
new_student->course2_score = scores[1];
new_student->course3_score = scores[2];
// 设置总分要求(这里为了简单,假设所有课程权重相等)
new_student->total_score = (scores[0] + scores[1] + scores[2]) / 3;
return new_student;
}
void delete_student(Student** students, int size, int index) {
if (index >= 0 && index < size) {
free(students[index]);
students[index] = NULL;
printf("Student at index %d has been deleted.\n", index);
} else {
printf("Invalid index.\n");
}
}
void modify_student(Student** students, int size, int index, int new_id, char* new_name, float* new_scores) {
if (index >= 0 && index < size) {
students[index]->student_id = new_id;
strcpy(students[index]->name, new_name);
students[index]->course1_score = new_scores[0];
students[index]->course2_score = new_scores[1];
students[index]->course3_score = new_scores[2];
// 更新总分要求(同上)
students[index]->total_score = (new_scores[0] + new_scores[1] + new_scores[2]) / 3;
printf("Student %d's information updated.\n", index);
} else {
printf("Invalid index.\n");
}
}
int main() {
int num_students = 50; // 这里假设最多有50名学生
Student* students = (Student*)malloc(num_students * sizeof(Student));
// 添加学生信息,模拟输入
for (int i = 0; i < num_students; ++i) {
Student* temp_student = create_student(i+1, "Student" + to_string(i+1), {80, 90, 70}); // 示例分数
if (students[i] != NULL) {
free(students[i]);
}
students[i] = temp_student;
}
// 修改和删除学生信息示例
modify_student(students, num_students, 2, 102, "Modified Student", {95, 92, 98});
delete_student(students, num_students, 49);
// 其他学生仍存在,可以根据需要遍历和处理
// 释放内存
for (int i = 0; i < num_students; ++i) {
if (students[i]) {
free(students[i]);
}
}
free(students);
return 0;
}
```
阅读全文
相关推荐



















