用c语言使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。
时间: 2024-03-14 07:47:00 浏览: 245
好的,我可以帮你解决这个问题。
首先,我们可以定义一个结构体来存储学生信息:
```c
typedef struct {
int id; // 学号
char name[20]; // 姓名
int score[3]; // 3门课程成绩
int total_score; // 总分
} student;
```
然后,我们可以定义一个长度为50的数组来存储学生信息:
```c
student students[50];
```
接下来,我们可以编写函数来实现对学生信息的修改和删除操作。
对于修改操作,我们可以先根据学号查找到要修改的学生信息,然后再修改相应的字段:
```c
void modify_student(int id) {
int i;
for (i = 0; i < 50; i++) {
if (students[i].id == id) {
printf("请输入修改后的姓名:");
scanf("%s", students[i].name);
printf("请输入修改后的3门课程成绩:");
scanf("%d %d %d", &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].total_score = students[i].score[0] + students[i].score[1] + students[i].score[2];
printf("修改成功!\n");
return;
}
}
printf("找不到该学生!\n");
}
```
对于删除操作,我们可以先根据学号查找到要删除的学生信息,然后将后面的学生信息依次向前移动一个位置:
```c
void delete_student(int id) {
int i, j;
for (i = 0; i < 50; i++) {
if (students[i].id == id) {
for (j = i; j < 49; j++) {
students[j] = students[j+1];
}
printf("删除成功!\n");
return;
}
}
printf("找不到该学生!\n");
}
```
完整的代码如下:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
int id; // 学号
char name[20]; // 姓名
int score[3]; // 3门课程成绩
int total_score; // 总分
} student;
student students[50];
void modify_student(int id) {
int i;
for (i = 0; i < 50; i++) {
if (students[i].id == id) {
printf("请输入修改后的姓名:");
scanf("%s", students[i].name);
printf("请输入修改后的3门课程成绩:");
scanf("%d %d %d", &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].total_score = students[i].score[0] + students[i].score[1] + students[i].score[2];
printf("修改成功!\n");
return;
}
}
printf("找不到该学生!\n");
}
void delete_student(int id) {
int i, j;
for (i = 0; i < 50; i++) {
if (students[i].id == id) {
for (j = i; j < 49; j++) {
students[j] = students[j+1];
}
printf("删除成功!\n");
return;
}
}
printf("找不到该学生!\n");
}
int main() {
int choice, id, i;
while (1) {
printf("请选择操作(1.添加学生 2.修改学生 3.删除学生 4.显示所有学生信息 0.退出):");
scanf("%d", &choice);
switch (choice) {
case 1:
for (i = 0; i < 50; i++) {
if (students[i].id == 0) {
printf("请输入学号:");
scanf("%d", &students[i].id);
printf("请输入姓名:");
scanf("%s", students[i].name);
printf("请输入3门课程成绩:");
scanf("%d %d %d", &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].total_score = students[i].score[0] + students[i].score[1] + students[i].score[2];
printf("添加成功!\n");
break;
}
}
if (i == 50) {
printf("学生数量已达上限!\n");
}
break;
case 2:
printf("请输入要修改的学生学号:");
scanf("%d", &id);
modify_student(id);
break;
case 3:
printf("请输入要删除的学生学号:");
scanf("%d", &id);
delete_student(id);
break;
case 4:
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总分\n");
for (i = 0; i < 50; i++) {
if (students[i].id != 0) {
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].total_score);
}
}
break;
case 0:
printf("退出程序!\n");
return 0;
default:
printf("无效操作!\n");
}
}
}
```
阅读全文