用c语言实现学生信息管理系统中删除学生的功能,不能使用链表
时间: 2024-03-22 20:39:35 浏览: 62
好的,对于这个问题,我们可以使用数组来存储学生信息。具体实现步骤如下:
1. 定义一个结构体来存储学生信息,包括学号、姓名、性别、年龄等字段。
```c
struct Student {
int id;
char name[20];
char gender;
int age;
};
```
2. 定义一个数组来存储学生信息,可以使用静态数组或动态数组,这里以静态数组为例。
```c
#define MAX_STUDENTS 100
struct Student students[MAX_STUDENTS];
int count = 0; // 记录当前学生数量
```
3. 实现删除学生的函数,可以先遍历数组找到要删除的学生,然后将后面的学生往前移动一个位置,最后将学生数量减一。
```c
void deleteStudent(int id) {
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
break;
}
}
if (i == count) {
printf("没有找到该学生!\n");
return;
}
for (int j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
count--;
printf("删除成功!\n");
}
```
完整代码如下:
```c
#include <stdio.h>
#define MAX_STUDENTS 100
struct Student {
int id;
char name[20];
char gender;
int age;
};
struct Student students[MAX_STUDENTS];
int count = 0; // 记录当前学生数量
void deleteStudent(int id) {
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
break;
}
}
if (i == count) {
printf("没有找到该学生!\n");
return;
}
for (int j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
count--;
printf("删除成功!\n");
}
int main() {
// 添加几个学生
students[0].id = 1001;
strcpy(students[0].name, "张三");
students[0].gender = 'M';
students[0].age = 20;
students[1].id = 1002;
strcpy(students[1].name, "李四");
students[1].gender = 'F';
students[1].age = 19;
count = 2;
// 删除学号为1002的学生
deleteStudent(1002);
// 输出剩余学生信息
for (int i = 0; i < count; i++) {
printf("学号:%d,姓名:%s,性别:%c,年龄:%d\n", students[i].id, students[i].name, students[i].gender, students[i].age);
}
return 0;
}
```
希望能够帮到您!
阅读全文