已知一个顺序表,表中记录按学号递增有序,要求在表中增加一个学生的记录,该学生的学号,姓名,英语成绩,高数成绩,计算机成绩从键盘输入,增加记录后,表仍递增有序。
1条回答 默认 最新
- 嵌入式小企鹅 2024-09-30 11:43关注
#include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体 typedef struct { int id; // 学号 char name[50]; // 姓名 float english; // 英语成绩 float math; // 高数成绩 float computer; // 计算机成绩 } Student; int main() { int n = 0; // 现有学生数量 Student students[100]={0}; // 假设最多有100个学生 int newId; char newName[50]={0}; float newEnglish, newMath, newComputer; int inserted = 0; // 假设从文件、数据库或其他来源读取了n个学生信息到students数组 // 这里我们直接示例化一些数据 students[0] = (Student){1, "Alice", 85, 92, 88}; students[1] = (Student){2, "Bob", 78, 81, 85}; n = 2; // 目前数组中有2个学生 // 从键盘输入新学生信息 printf("请输入新学生的学号: "); scanf("%d", &newId); printf("请输入新学生的姓名: "); scanf("%s", newName); printf("请输入新学生的英语成绩: "); scanf("%f", &newEnglish); printf("请输入新学生的高数成绩: "); scanf("%f", &newMath); printf("请输入新学生的计算机成绩: "); scanf("%f", &newComputer); // 找到插入位置 for (int i = 0; i < n; i++) { if (students[i].id >= newId) { // 移动后续元素 for (int j = n; j > i; j--) { students[j] = students[j - 1]; } // 插入新元素 students[i] = (Student){newId, "", newEnglish, newMath, newComputer}; strcpy(students[i].name, newName); inserted = 1; break; } } // 如果新学生是学号最大的,追加到数组末尾 if (!inserted) { students[n] = (Student){newId, "", newEnglish, newMath, newComputer}; strcpy(students[n].name, newName); n++; } // 打印更新后的学生列表 printf("更新后的学生列表:\n"); for (int i = 0; i < n; i++) { printf("学号: %d, 姓名: %s, 英语: %.2f, 高数: %.2f, 计算机: %.2f\n", students[i].id, students[i].name, students[i].english, students[i].math, students[i].computer); } return 0; } //可以使用这个
解决 无用评论 打赏 举报
悬赏问题
- ¥15 UE5.1局部变量对蓝图不可见
- ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
- ¥20 sentry如何捕获上传Android ndk 崩溃
- ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
- ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?
- ¥15 nasm x86 变量归零
- ¥65 Tree 树形控件实现单选功能,可以使用element也可以手写一个,实现全选为全选状态
- ¥60 寻抓云闪付tn组成网页付款链接
- ¥16 寻字节跳动内部人员帮推简历
- ¥20 如何通过sentry收集上传Android ndk的崩溃?