用数据结构C语言的链式结构实现学生管理系统包括学生姓名,学号后四位,年龄,性别,三门课成绩,录入学生信息时能够不按照任何顺序进行录入代码
时间: 2024-11-09 15:29:20 浏览: 29
在C语言中,我们可以使用链表数据结构来实现一个动态的学生管理系统,由于链表可以动态分配内存,所以非常适合处理不确定数量的数据。首先,我们需要定义一个`Student`结构体,包含学生的属性,如姓名、学号后四位、年龄、性别以及三门课程的成绩。这里假设我们只考虑单向链表:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义 Student 结构体
typedef struct {
char name[50];
char id[5]; // 学号后四位
int age;
char gender;
int score[3]; // 三门课程的成绩
struct Student *next; // 指向下一个学生节点
} Student;
// 函数声明用于添加新学生到链表
void addStudent(Student **head, const char* name, char id[], int age, char gender, int scores[]);
// 添加新学生函数
void addStudent(Student **head, const char* name, char id[], int age, char gender, int scores[]) {
Student *newStudent = (Student*)malloc(sizeof(Student));
strcpy(newStudent->name, name);
strncpy(newStudent->id, id, 4); // 只复制前四个字符
newStudent->age = age;
newStudent->gender = gender;
memcpy(newStudent->score, scores, sizeof(int) * 3);
newStudent->next = NULL;
if (*head == NULL) {
*head = newStudent;
} else {
Student *current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newStudent;
}
}
// 显示所有学生信息
void displayStudents(Student *head) {
Student *temp = head;
while (temp != NULL) {
printf("姓名:%s, 学号:%s, 年龄:%d, 性别:%c, 成绩:%d %d %d\n", temp->name, temp->id, temp->age, temp->gender, temp->score[0], temp->score[1], temp->score[2]);
temp = temp->next;
}
}
int main() {
Student *head = NULL;
// 示例输入
char name[] = "张三";
char id[] = "12345";
int age = 20;
char gender = 'M';
int scores[] = {85, 90, 92};
// 添加学生信息
addStudent(&head, name, id, age, gender, scores);
// 显示所有学生
displayStudents(head);
return 0;
}
```
阅读全文