prooojekt 2022-12-21 22:02 采纳率: 100%
浏览 115
已结题

关于#结构体#的问题,如何解决?(语言-c语言)

利用结构体存储学生的基本信息(学号、姓名、6科成绩、平均分),完成班级30个同学的100以内的成绩随机生成,调用函数按平均分进行由高到低排序,调用函数输出初始学生信息和排序后的信息。

  • 写回答

7条回答 默认 最新

  • wux_labs 2022-12-21 22:11
    关注

    结构体的设计不难,主要解决随机生成和排序的问题就好。
    代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    #define NUMS 30
    
    struct student{
        int num;  // 学号
        char name[20];  // 姓名
        int scores[6];  // 成绩
        double avg;     // 平均分
    };
    
    void print_info(struct student stus[]);
    void select_sort(struct student stus[]);
    
    int main(void)
    {
        struct student stus[NUMS];
        // 生成30名学生随机成绩,平均分
        for (int i = 0; i < NUMS; i++){
            struct student stu;
            stu.num = i + 1; // 学号
            sprintf(stu.name,"学生%d", i + 1); // 姓名
            stu.avg = 0;
            for(int j = 0; j < 6; j++) {
                stu.scores[j] = rand() % 101; // 生成各科成绩
                stu.avg += stu.scores[j];
            }
            stu.avg = stu.avg / 6; // 生成平均分
            stus[i] = stu;
        }
        printf("排序前学生信息:\n");
        print_info(stus);
        select_sort(stus);
        printf("排序后学生信息:\n");
        print_info(stus);
        return 0;
    }
    
    void print_info(struct student stus[])
    {
        for(int i = 0; i < NUMS; i++)
        {
            printf("学号:%d, 姓名:%s, 各科成绩:%d,%d,%d,%d,%d,%d, 平均分:%lf\n", stus[i].num,stus[i].name,stus[i].scores[0],stus[i].scores[1],stus[i].scores[2],stus[i].scores[3],stus[i].scores[4],stus[i].scores[5],stus[i].avg);
        }
    }
    
    void select_sort(struct student stus[])
    {
        for(int i=0; i<NUMS-1; i++){
            for(int j=i+1; j<NUMS; j++){
                if(stus[j].avg > stus[i].avg){
                    struct student temp = stus[i];
                    stus[i] = stus[j];
                    stus[j] = temp;
                }
            }
        }
    }
    

    运行结果:

    排序前学生信息:
    学号:1, 姓名:学生1, 各科成绩:32,32,54,12,52,56, 平均分:39.666667
    学号:2, 姓名:学生2, 各科成绩:8,30,44,94,44,39, 平均分:43.166667
    学号:3, 姓名:学生3, 各科成绩:65,19,51,91,1,5, 平均分:38.666667
    学号:4, 姓名:学生4, 各科成绩:89,34,25,58,20,51, 平均分:46.166667
    学号:5, 姓名:学生5, 各科成绩:38,65,30,7,20,10, 平均分:28.333333
    学号:6, 姓名:学生6, 各科成绩:51,18,43,71,97,61, 平均分:56.833333
    学号:7, 姓名:学生7, 各科成绩:26,5,57,70,65,0, 平均分:37.166667
    学号:8, 姓名:学生8, 各科成绩:75,29,86,93,87,87, 平均分:76.166667
    学号:9, 姓名:学生9, 各科成绩:64,75,88,89,100,7, 平均分:70.500000
    学号:10, 姓名:学生10, 各科成绩:40,37,38,36,44,24, 平均分:36.500000
    学号:11, 姓名:学生11, 各科成绩:46,95,43,89,32,5, 平均分:51.666667
    学号:12, 姓名:学生12, 各科成绩:15,58,77,72,95,8, 平均分:54.166667
    学号:13, 姓名:学生13, 各科成绩:38,69,37,24,27,90, 平均分:47.500000
    学号:14, 姓名:学生14, 各科成绩:77,92,31,30,80,30, 平均分:56.666667
    学号:15, 姓名:学生15, 各科成绩:37,86,33,76,21,77, 平均分:55.000000
    学号:16, 姓名:学生16, 各科成绩:100,68,37,8,22,69, 平均分:50.666667
    学号:17, 姓名:学生17, 各科成绩:81,38,94,57,76,54, 平均分:66.666667
    学号:18, 姓名:学生18, 各科成绩:65,14,89,69,4,16, 平均分:42.833333
    学号:19, 姓名:学生19, 各科成绩:24,47,7,21,78,53, 平均分:38.333333
    学号:20, 姓名:学生20, 各科成绩:17,81,39,50,22,60, 平均分:44.833333
    学号:21, 姓名:学生21, 各科成绩:93,89,94,30,97,16, 平均分:69.833333
    学号:22, 姓名:学生22, 各科成绩:65,43,20,24,67,62, 平均分:46.833333
    学号:23, 姓名:学生23, 各科成绩:78,98,42,67,32,46, 平均分:60.500000
    学号:24, 姓名:学生24, 各科成绩:49,57,60,56,44,37, 平均分:50.500000
    学号:25, 姓名:学生25, 各科成绩:75,62,17,13,11,40, 平均分:36.333333
    学号:26, 姓名:学生26, 各科成绩:40,4,95,100,0,57, 平均分:49.333333
    学号:27, 姓名:学生27, 各科成绩:82,31,0,1,56,67, 平均分:39.500000
    学号:28, 姓名:学生28, 各科成绩:30,100,64,72,66,63, 平均分:65.833333
    学号:29, 姓名:学生29, 各科成绩:18,81,19,44,2,63, 平均分:37.833333
    学号:30, 姓名:学生30, 各科成绩:81,78,91,64,91,2, 平均分:67.833333
    排序后学生信息:
    学号:8, 姓名:学生8, 各科成绩:75,29,86,93,87,87, 平均分:76.166667
    学号:9, 姓名:学生9, 各科成绩:64,75,88,89,100,7, 平均分:70.500000
    学号:21, 姓名:学生21, 各科成绩:93,89,94,30,97,16, 平均分:69.833333
    学号:30, 姓名:学生30, 各科成绩:81,78,91,64,91,2, 平均分:67.833333
    学号:17, 姓名:学生17, 各科成绩:81,38,94,57,76,54, 平均分:66.666667
    学号:28, 姓名:学生28, 各科成绩:30,100,64,72,66,63, 平均分:65.833333
    学号:23, 姓名:学生23, 各科成绩:78,98,42,67,32,46, 平均分:60.500000
    学号:6, 姓名:学生6, 各科成绩:51,18,43,71,97,61, 平均分:56.833333
    学号:14, 姓名:学生14, 各科成绩:77,92,31,30,80,30, 平均分:56.666667
    学号:15, 姓名:学生15, 各科成绩:37,86,33,76,21,77, 平均分:55.000000
    学号:12, 姓名:学生12, 各科成绩:15,58,77,72,95,8, 平均分:54.166667
    学号:11, 姓名:学生11, 各科成绩:46,95,43,89,32,5, 平均分:51.666667
    学号:16, 姓名:学生16, 各科成绩:100,68,37,8,22,69, 平均分:50.666667
    学号:24, 姓名:学生24, 各科成绩:49,57,60,56,44,37, 平均分:50.500000
    学号:26, 姓名:学生26, 各科成绩:40,4,95,100,0,57, 平均分:49.333333
    学号:13, 姓名:学生13, 各科成绩:38,69,37,24,27,90, 平均分:47.500000
    学号:22, 姓名:学生22, 各科成绩:65,43,20,24,67,62, 平均分:46.833333
    学号:4, 姓名:学生4, 各科成绩:89,34,25,58,20,51, 平均分:46.166667
    学号:20, 姓名:学生20, 各科成绩:17,81,39,50,22,60, 平均分:44.833333
    学号:2, 姓名:学生2, 各科成绩:8,30,44,94,44,39, 平均分:43.166667
    学号:18, 姓名:学生18, 各科成绩:65,14,89,69,4,16, 平均分:42.833333
    学号:1, 姓名:学生1, 各科成绩:32,32,54,12,52,56, 平均分:39.666667
    学号:27, 姓名:学生27, 各科成绩:82,31,0,1,56,67, 平均分:39.500000
    学号:3, 姓名:学生3, 各科成绩:65,19,51,91,1,5, 平均分:38.666667
    学号:19, 姓名:学生19, 各科成绩:24,47,7,21,78,53, 平均分:38.333333
    学号:29, 姓名:学生29, 各科成绩:18,81,19,44,2,63, 平均分:37.833333
    学号:7, 姓名:学生7, 各科成绩:26,5,57,70,65,0, 平均分:37.166667
    学号:10, 姓名:学生10, 各科成绩:40,37,38,36,44,24, 平均分:36.500000
    学号:25, 姓名:学生25, 各科成绩:75,62,17,13,11,40, 平均分:36.333333
    学号:5, 姓名:学生5, 各科成绩:38,65,30,7,20,10, 平均分:28.333333
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集