鸡腿啊腿 2023-06-01 21:37 采纳率: 100%
浏览 61
已结题

大一学生,求一个c语言代码解析呀


struct Student *del()
{
    struct Student *p;
    p = Stu;
    int i = 0;
    int number;
    printf("请选择你要删除的学生的学号\n");
    scanf("%d", &number);
    while (p[i].id != number && i < count)
    {
        i++;
    }
    if (p[i].id == number)
    {
        for (; i < count; i++)
        {
            p[i] = p[i + 1];
        }
        count--;
    }
    else
    {
        printf("查无此人!\n");
    }
    printf("删除完毕!\n");
    return Stu;
};
  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2023-06-01 21:43
    关注
    
    // 定义函数 del,用于删除学生结构体数组中指定学号的学生记录
    struct Student *del()
    {
        // 定义指向结构体为 Student 类型的指针 p,并将结构体数组 Stu 的地址赋值给它
        struct Student *p;
        p = Stu;
        // 定义循环变量 i 和要删除的学生学号 number
        int i = 0;
        int number;
        // 提示用户选择要删除的学生学号
        printf("请选择你要删除的学生的学号\n");
        // 读取用户输入的学号
        scanf("%d", &number);
        // 在数组中查找指定学号的学生记录
        while (p[i].id != number && i < count)
        {
            i++;
        }
        // 如果找到指定学号的学生记录
        if (p[i].id == number)
        {
            // 将该学生记录后面的所有记录向前移动一位,相当于删除了该学生记录
            for (; i < count; i++)
            {
                p[i] = p[i + 1];
            }
            // 数组元素个数减一
            count--;
        }
        else
        {
            // 如果没有找到指定学号的学生记录,则输出提示信息
            printf("查无此人!\n");
        }
        // 输出删除完毕提示语句,然后返回结构体数组 Stu 的地址
        printf("删除完毕!\n");
        return Stu;
    };
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 6月1日