c语言程序:使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。
时间: 2024-12-29 22:31:56 浏览: 107
在C语言中,你可以创建一个结构体来存储学生的信息,然后通过数组或者链表的形式来管理多个学生的数据。这里是一个简单的例子,我们将使用结构体、动态内存分配以及指针来实现这个功能:
#include <stdio.h>
#include <stdlib.h>
// 定义学生信息结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
float score[3]; // 三门课程的成绩
float total_score; // 总分
} Student;
// 动态分配和初始化学生信息
void createStudent(Student* students, int index) {
students[index].id = index + 1;
strcpy(students[index].name, "学生" + (index+1));
for(int i=0; i<3; i++) {
students[index].score[i] = rand() % 100; // 初始化成绩,这里是随机生成
}
students[index].total_score = 0;
for(i=0; i<3; i++)
students[index].total_score += students[index].score[i];
}
// 修改学生信息
void updateScore(Student* student, int courseIndex, float newScore) {
if(courseIndex >= 0 && courseIndex < 3) {
student->score[courseIndex] = newScore;
student->total_score = 0;
for(int i=0; i<3; i++)
student->total_score += student->score[i];
} else {
printf("错误:课程索引超出范围.\n");
}
}
// 删除学生信息
void deleteStudent(Student** students, int index) {
if(index < *students) { // 检查是否越界
Student temp = (*students)[index];
memmove(*students + index, (*students) + index + 1, sizeof(Student)*(50 - index - 1)); // 移动元素
free(temp); // 释放已删除学生的内存空间
(*students)[-1].total_score = 0; // 更新最后一个学生的总分
}
}
int main() {
Student* students = malloc(sizeof(Student) * 50);
for(int i=0; i<50; i++) {
createStudent(students, i);
printf("学生%02d信息:\n", students[i].id);
// 打印学生信息...
}
// 使用updateScore和deleteStudent函数来操作学生信息
// ...
return 0;
}
相关推荐

















