以下是一个用C语言实现的学生信息示意性检索程序的简单示例。请注意,这是一个基本的实现,没有错误检查和异常处理,可能还需要进一步的优化和扩展。 ```c #include #include #include // 定义学生结构体 typedef struct Student { int id; char sex; int age; char class[30]; struct Student *next; } Student; // 函数声明 void initStudents(Student **head); void insertStudent(Student **head); void deleteStudent(Student **head); void modifyStudent(Student **head); void findStudent(Student *head); void displayStudents(Student *head); int main() { int choice, numStudents; Student *head = NULL; do { printf("\n学生信息管理程序\n"); printf("1. 初始化学生信息\n"); printf("2. 插入学生\n"); printf("3. 删除学生\n"); printf("4. 修改学生信息\n"); printf("5. 查找学生信息\n"); printf("6. 显示所有学生信息\n"); printf("7. 退出程序\n"); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入班级学生人数:"); scanf("%d", &numStudents); initStudents(&head); for (int i = 0; i < numStudents; i++) { insertStudent(&head); } break; case 2: insertStudent(&head); break; case 3: deleteStudent(&head); break; case 4: modifyStudent(&head); break; case 5: findStudent(head); break; case 6: displayStudents(head); break; case 7: printf("程序退出\n"); break; default: printf("无效的选择,请重新输入\n"); } } while (choice != 7); // 释放链表内存 Student *temp; while (head != NULL) { temp = head; head = head->next; free(temp); } return 0; } // 学生信息的初始化 void initStudents(Student **head) { *head = NULL; } // 插入学生 void insertStudent(Student **head) { Student *newStudent = (Student *)malloc(sizeof(Student)); printf("请输入学号:"); scanf("%d", &newStudent->id); getchar(); // 消耗换行符 printf("请输入性别(M/F):"); scanf("%c", &newStudent->sex); getchar(); // 消耗换行符 printf("请输入年龄:"); scanf("%d", &newStudent->age); printf("请输入班级:"); fgets(newStudent->class, sizeof(newStudent->class), stdin); newStudent->class[strcspn(newStudent->class, "\n")] = 0; // 去除换行符 newStudent->next = *head; *head = newStudent; printf("学生信息插入成功\n"); } // 删除学生 void deleteStudent(Student **head) { int id; printf("请输入要删除学生的学号:"); scanf("%d", &id); Student *prev = NULL, *current = *head; while (current != NULL && current->id != id) { prev = current; current = current->next; } if (current == NULL) { printf("未找到学号为%d的学生\n", id); } else { if (prev == NULL) { *head = current->next; } else { prev->next = current->next; } free(current); printf("学生信息删除成功\n"); } } // 修改学生信息 void modifyStudent(Student **head) { int id; printf("请输入要修改信息的学生学号:"); scanf("%d", &id); Student *current

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