m0_75184616 2022-12-21 22:38 采纳率: 40%
浏览 348
已结题

大一的c语言,要用结构体的

c语言,要运用结构体,其他要求看图,其他觉得有问题的可以找我

img

  • 写回答

6条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-21 22:58
    关注

    ChatGPT尝试为您解答,仅供参考

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define NUM_STUDENTS 30
    
    // 定义结构体表示学生信息
    struct student
    {
        int id;
        char name[32];
        int scores[6];
        float avg;
    };
    
    // 生成随机成绩函数
    void generate_scores(struct student *s)
    {
        for (int i = 0; i < 6; i++)
        {
            s->scores[i] = rand() % 100;
        }
    }
    
    // 计算平均分函数
    void calculate_avg(struct student *s)
    {
        float sum = 0;
        for (int i = 0; i < 6; i++)
        {
            sum += s->scores[i];
        }
        s->avg = sum / 6;
    }
    
    // 按平均分排序函数
    void sort_by_avg(struct student *students)
    {
        // 冒泡排序
        for (int i = 0; i < NUM_STUDENTS - 1; i++)
        {
            for (int j = 0; j < NUM_STUDENTS - i - 1; j++)
            {
                if (students[j].avg < students[j + 1].avg)
                {
                    struct student temp = students[j];
                    students[j] = students[j + 1];
                    students[j + 1] = temp;
                }
            }
        }
    }
    
    // 输出学生信息函数
    void print_students(struct student *students)
    {
        for (int i = 0; i < NUM_STUDENTS; i++)
        {
            printf("学号:%d 姓名:%s 平均分:%.2f\n", students[i].id, students[i].name, students[i].avg);
        }
    }
    
    int main()
    {
        // 初始化随机数种子
        srand(time(0));
    
        // 创建学生数组
        struct student students[NUM_STUDENTS];
    
        // 初始化学生信息
        for (int i = 0; i < NUM_STUDENTS; i++)
        {
            // 初始化学号和姓名
            students[i].id = i + 1;
            sprintf(students[i].name, "学生%d", i + 1);
    
            // 随机生成成绩
            generate_scores(&students[i]);
    
            // 计算平均分
            calculate_avg(&students[i]);
        }
    
        // 输出初始学生信息
        printf("初始学生信息:\n");
        print_students(students);
    
        // 按平均分排序
        sort_by_avg(students);
    
        // 输出排序后的学生信息
        printf("排序后的学生信息:\n");
        print_students(students);
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 创建了问题 12月21日

悬赏问题

  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法