利用 C 语言当中的结构体知识,建立学生结构体 Stu,对应的属性有 name(姓名),id(学号),score(分数)。请为这些属性分配好合适的数据 类型,并定义一个能容纳 50 个的 Stu 结构体数组。(中文)包含添加,删除,修改,遍历学生信息
时间: 2023-12-13 18:05:16 浏览: 93
好的,根据您的要求,我来为您回答这个问题。
首先,我们需要为学生结构体 Stu 定义属性,包括姓名、学号和分数。根据需求,我们可以将姓名和学号定义为字符串类型(char数组),分数定义为浮点型(float)。
接下来,我们可以定义一个包含 50 个 Stu 结构体的数组,可以使用如下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[20]; // 姓名
char id[10]; // 学号
float score; // 分数
} Stu;
int main(void) {
// 定义包含 50 个 Stu 结构体的数组
Stu stuArr[50];
// 可以对数组中的元素进行操作,例如给第一个学生赋值
strcpy(stuArr[0].name, "张三");
strcpy(stuArr[0].id, "1001");
stuArr[0].score = 90.5;
// 添加学生信息
int len = 1; // 数组中已有的学生数量
while (len < 50) {
printf("请输入学生姓名、学号和分数(用空格分隔):");
scanf("%s %s %f", stuArr[len].name, stuArr[len].id, &stuArr[len].score);
len++;
printf("是否继续添加?(y/n)");
char c;
scanf(" %c", &c);
if (c == 'n' || c == 'N') {
break;
}
}
// 遍历学生信息
for (int i = 0; i < len; i++) {
printf("姓名:%s\t学号:%s\t分数:%.2f\n", stuArr[i].name, stuArr[i].id, stuArr[i].score);
}
// 修改学生信息
printf("请输入要修改的学生学号:");
char modifyId[10];
scanf("%s", modifyId);
for (int i = 0; i < len; i++) {
if (strcmp(stuArr[i].id, modifyId) == 0) {
printf("请输入新的学生姓名、学号和分数(用空格分隔):");
scanf("%s %s %f", stuArr[i].name, stuArr[i].id, &stuArr[i].score);
break;
}
}
// 删除学生信息
printf("请输入要删除的学生学号:");
char deleteId[10];
scanf("%s", deleteId);
for (int i = 0; i < len; i++) {
if (strcmp(stuArr[i].id, deleteId) == 0) {
for (int j = i; j < len - 1; j++) {
stuArr[j] = stuArr[j + 1];
}
len--;
printf("删除成功!\n");
break;
}
}
// 遍历学生信息
for (int i = 0; i < len; i++) {
printf("姓名:%s\t学号:%s\t分数:%.2f\n", stuArr[i].name, stuArr[i].id, stuArr[i].score);
}
return 0;
}
```
以上代码演示了如何定义学生结构体 Stu,并且创建一个包含 50 个 Stu 结构体的数组,并且实现了添加、删除、修改和遍历学生信息的功能。希望我的回答能够帮到您!
阅读全文