用C语言编写使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生
时间: 2024-12-19 15:19:31 浏览: 28
C语言学生成绩信息管理系统【结构体+文本】
在C语言中,我们可以创建一个结构体来存储学生的信息,包括学号、姓名以及三门课程的成绩。这里是一个简单的例子,我们将使用链表来实现学生信息的管理,以便于添加、修改和删除:
```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;
// 学生链表节点
typedef struct Node {
Student info;
struct Node* next;
} Node;
// 创建新节点并初始化学生信息
Node* createStudent(int id, char* name, float score1, float score2, float score3) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->info.student_id = id;
strcpy(newNode->info.name, name);
newNode->info.course1_score = score1;
newNode->info.course2_score = score2;
newNode->info.course3_score = score3;
newNode->info.total_score = score1 + score2 + score3;
newNode->next = NULL;
return newNode;
}
// 添加学生到链表
void addStudent(Node** head, Node* newNode) {
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 修改学生信息
void updateStudent(Node** head, int id, char* newName, float newScore1, float newScore2, float newScore3) {
Node* temp = *head;
while (temp != NULL && temp->info.student_id != id) {
temp = temp->next;
}
if (temp != NULL) {
strcpy(temp->info.name, newName);
temp->info.course1_score = newScore1;
temp->info.course2_score = newScore2;
temp->info.course3_score = newScore3;
temp->info.total_score = newScore1 + newScore2 + newScore3;
}
}
// 删除学生
void deleteStudent(Node** head, int id) {
if (*head == NULL) {
return;
}
if ((*head)->info.student_id == id) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node* prev = *head;
Node* curr = *head->next;
while (curr != NULL && curr->info.student_id != id) {
prev = curr;
curr = curr->next;
}
if (curr != NULL) {
prev->next = curr->next;
free(curr);
}
}
int main() {
Node* head = NULL;
// ... (在此添加实际的添加、修改和删除操作)
return 0;
}
```
在`main`函数里,你可以根据需要调用上述函数来操作学生信息。注意,这个示例仅包含了基本的功能,并未包含错误处理,实际使用时你需要考虑边界条件和内存管理。
阅读全文