2401_87770659 2024-09-30 11:07 采纳率: 0%
浏览 3

求c语言题目数据结构

已知一个顺序表,表中记录按学号递增有序,要求在表中增加一个学生的记录,该学生的学号,姓名,英语成绩,高数成绩,计算机成绩从键盘输入,增加记录后,表仍递增有序。

  • 写回答

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的崩溃?