用c语言编写程序,定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和各科成绩信息,利用void deleteinfo(stuStru *s,int &n,char id[]) 函数,实现学生信息删除功能,即根据准考证号来删除满足条件的学生信息。
时间: 2024-01-22 12:17:51 浏览: 64
以下是用C语言编写程序,定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和各科成绩信息,以及实现学生信息删除功能的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
typedef struct {
char id[20]; // 准考证号
char name[20]; // 姓名
int score[3]; // 各科成绩
} stuStru;
void deleteinfo(stuStru *s, int *n, char id[]) {
int i;
for (i = 0; i < *n; i++) {
if (strcmp(s[i].id, id) == 0) {
// 找到要删除的学生信息
break;
}
}
if (i == *n) {
// 没有找到要删除的学生信息
printf("Can't find student with id %s.\n", id);
return;
}
// 将后面的学生信息向前移动
for (; i < *n - 1; i++) {
s[i] = s[i + 1];
}
(*n)--; // 学生数量减一
printf("Student with id %s has been deleted.\n", id);
}
int main() {
stuStru students[MAX_STUDENT_NUM];
int n = 0; // 学生数量
int i;
char id[20];
// 输入学生信息
printf("Please input student information (id, name, score1, score2, score3):\n");
for (i = 0; i < MAX_STUDENT_NUM; i++) {
scanf("%s", students[i].id);
if (strcmp(students[i].id, "0") == 0) {
// 遇到准考证号为0,输入结束
break;
}
scanf("%s %d %d %d", students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
n++;
}
// 删除学生信息
printf("Please input the id of the student you want to delete:\n");
scanf("%s", id);
deleteinfo(students, &n, id);
// 输出剩余的学生信息
printf("The remaining student information:\n");
for (i = 0; i < n; i++) {
printf("%s %s %d %d %d\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2]);
}
return 0;
}
```
在上面的代码中,我们首先定义了一个用于存储学生信息的结构体 `stuStru`,包括准考证号、姓名和各科成绩信息。然后,我们定义了一个 `deleteinfo` 函数来实现学生信息删除功能,其中 `s` 是指向学生信息结构体数组的指针,`n` 是学生数量的指针,`id` 是要删除的学生的准考证号。在函数中,我们首先遍历学生信息数组,找到要删除的学生信息,然后将后面的学生信息向前移动,最后将学生数量减一。如果没有找到要删除的学生信息,则输出提示信息。在 `main` 函数中,我们首先输入学生信息,然后调用 `deleteinfo` 函数来删除学生信息,最后输出剩余的学生信息。
注意,在实现 `deleteinfo` 函数时,我们使用了指向学生数量的指针来修改学生数量,这是因为函数中修改了学生数量后,需要将修改后的学生数量传递回 `main` 函数中,以便输出剩余的学生信息。
阅读全文