利用 C 语言当中的结构体知识,建立学生结构体 Stu,对应的属性有 name(姓名),id(学号),score(分数)。请为这些属性分配好合适的数据 类型,并定义一个能容纳 50 个的 Stu 结构体数组来做一个学生管理系统
时间: 2024-02-18 07:04:11 浏览: 61
好的,以下是对应的 C 代码:
```c
#include <stdio>
#include <stdlib.h>
<string.h>
typedef struct student {
char name[20]; // 姓名
int id; // 学号
float score; // 分数
} Stu; // 学生结构体
int main() {
Stu students[50]; // 定义一个能容纳 50 个学生的结构体数组
int count = 0; // 记录当前学生数量
while (1) {
printf("\n请选择操作:\n1. 添加学生信息\n2. 查看学生信息\n3. 修改学生信息\n4. 删除学生信息\n5. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: // 添加学生信息
if (count >= 50) {
printf("学生数量已达到上限,无法添加!\n");
break;
}
printf("请输入学生姓名、学号、分数(用空格隔开):\n");
scanf("%s %d %f", students[count].name, &students[count].id, &students[count].score);
printf("添加成功!\n");
count++;
break;
case 2: // 查看学生信息
if (count == 0) {
printf("当前没有学生信息!\n");
break;
}
printf("当前学生信息如下:\n");
printf("姓名\t学号\t分数\n");
for (int i = 0; i < count; i++) {
printf("%s\t%d\t%.1f\n", students[i].name, students[i].id, students[i].score);
}
break;
case 3: // 修改学生信息
if (count == 0) {
printf("当前没有学生信息!\n");
break;
}
printf("请输入要修改的学生姓名:\n");
char name[20];
scanf("%s", name);
for (int i = 0; i < count; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("请输入新的学号和分数(用空格隔开):\n");
scanf("%d %f", &students[i].id, &students[i].score);
printf("修改成功!\n");
break;
}
if (i == count - 1) {
printf("未找到该学生信息!\n");
}
}
break;
case 4: // 删除学生信息
if (count == 0) {
printf("当前没有学生信息!\n");
break;
}
printf("请输入要删除的学生姓名:\n");
char del_name[20];
scanf("%s", del_name);
for (int i = 0; i < count; i++) {
if (strcmp(students[i].name, del_name) == 0) {
for (int j = i; j < count - 1; j++) {
students[j] = students[j+1];
}
count--;
printf("删除成功!\n");
break;
}
if (i == count - 1) {
printf("未找到该学生信息!\n");
}
}
break;
case 5: // 退出
printf("谢谢使用!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
上述代码中,我们定义了一个能容纳 50 个学生的结构体数组 `students`,并使用 `count` 变量记录当前学生数量。接着使用一个 `while` 循环,来不断读取用户输入的操作选项,并执行相应的操作。
在添加学生信息操作中,我们首先判断当前学生数量是否已达到上限,若未达到则提示用户输入学生姓名、学号和分数,并存储到 `students` 数组中。
在查看学生信息操作中,我们首先判断当前学生数量是否为 0,若为 0 则提示当前没有学生信息。否则,我们使用一个 `for` 循环遍历 `students` 数组,将每个学生的信息输出到控制台上。
在修改学生信息操作中,我们首先判断当前学生数量是否为 0,若为 0 则提示当前没有学生信息。然后提示用户输入要修改的学生姓名,并使用一个 `for` 循环遍历 `students` 数组,在找到对应学生信息时修改其学号和分数。
在删除学生信息操作中,我们首先判断当前学生数量是否为 0,若为 0 则提示当前没有学生信息。然后提示用户输入要删除的学生姓名,并使用一个 `for` 循环遍历 `students` 数组,在找到对应学生信息时将其删除。
最后,在退出操作中,我们使用 `return` 语句退出程序。
希望以上代码能够帮助到你!如果你有其他问题或者疑问,欢迎随时提出。
阅读全文