下面是一个简单的C语言程序,实现了您所描述的学生信息示意性检索程序。请注意,为了保持代码简洁明了,这里使用了基本的C语言功能,并没有包含复杂的错误处理或数据验证。 ```c #include #include #include // 定义学生结构体 typedef struct Student { int id; char sex; int age; char class[30]; struct Student *next; } Student; // 定义全局变量 Student *head = NULL; // 创建新节点 Student* createStudent(int id, char sex, int age, char class[]) { Student *newStudent = (Student*)malloc(sizeof(Student)); if (!newStudent) { return NULL; } newStudent->id = id; newStudent->sex = sex; newStudent->age = age; strcpy(newStudent->class, class); newStudent->next = NULL; return newStudent; } // 学生信息的初始化(链表的创建) void initializeStudents() { int numStudents; printf("请输入班级的学生人数: "); scanf("%d", &numStudents); for (int i = 0; i < numStudents; i++) { int id; char sex; int age; char class[30]; printf("请输入第%d个学生的信息:\n", i + 1); printf("学号: "); scanf("%d", &id); printf("性别: "); scanf(" %c", &sex); // 注意%c前有一个空格,用于读取输入缓冲区中的换行符 printf("年龄: "); scanf("%d", &age); printf("班级: "); scanf(" %29[^\n]", class); // 读取字符串,防止溢出,且忽略换行符 Student *newStudent = createStudent(id, sex, age, class); if (head == NULL) { head = newStudent; } else { Student *current = head; while (current->next != NULL) { current = current->next; } current->next = newStudent; } } } // 插入学生 void insertStudent() { int id; char sex; int age; char class[30]; printf("请输入要插入的学生的信息:\n"); printf("学号: "); scanf("%d", &id); printf("性别: "); scanf(" %c", &sex); printf("年龄: "); scanf("%d", &age); printf("班级: "); scanf(" %29[^\n]", class); Student *newStudent = createStudent(id, sex, age, class); newStudent->next = head; head = newStudent; } // 删除学生(按学号删除) void deleteStudent() { int id; printf("请输入要删除的学生学号: "); scanf("%d", &id); Student *prev = NULL; Student *current = head; while (current != NULL && current->id != id) { prev = current; current = current->next; } if (current == NULL) { printf("未找到该学生。\n"); } else { if (prev == NULL) { head = current->next; } else { prev->next = current->next; } free(current); printf("学生信息已删除。\n"); } } // 修改学生信息(按学号查找并修改) void updateStudent() { int id; char newSex; int newAge; char newClass[30]; printf("请输入要修改的学生学号: "); scanf("%d", &id); Student *current = head; while (current != NULL && current->id != id) { current = current->next; } if (current == NULL) { printf("未找到该学生。\n"); } else { printf("请输入新的学生信息:\n"); printf("性别: "); scanf(" %c", &newSex

点赞(0)
×
关注公众号,登录后继续创作
或点击进入高级版AI
扫码关注后未收到验证码,回复【登录】二字获取验证码
发表
评论
返回
顶部