predawn123 2021-11-19 14:00 采纳率: 100%
浏览 25
已结题

数组 计算中位数,不给定成绩,科目

img

  • 写回答

1条回答 默认 最新

  • 关注

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #define MAXRS 100
    #define MAXKC 5
    struct Student 
    {
        int id;
        int score[MAXKC];
    };
    
    int main()
    {
        int n,m,k;
        int i,j;
        float avg,mid;
        struct Student stu[MAXRS],tmp; 
        scanf("%d%d%d",&n,&m,&k);
        for (i=0;i<n;i++)
        {
            scanf("%d",&stu[i].id);
            for(j=0;j<m;j++)
                scanf("%d",&stu[i].score[j]);
        }
        //根据第k门成绩排序
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-1-i;j++)
            {
                if(stu[j].score[k-1] < stu[j+1].score[k-2])
                {
                    tmp = stu[j];
                    stu[j] = stu[j+1];
                    stu[j+1] = tmp;
                }
            }
        }
        //计算平均成绩
        avg = 0;
        for(i=0;i<n;i++)
            avg += stu[i].score[k-1];
        avg = avg/n;
        //中位数
        mid = stu[(n+1)/2].score[k-1];
        printf("%.1f %d",avg,mid);
    
        //根据学号排序
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-1-i;j++)
            {
                if(stu[j].id > stu[j+1].id)
                {
                    tmp = stu[j];
                    stu[j] = stu[j+1];
                    stu[j+1] = tmp;
                }
            }
        }
        //输出所有第k门成绩为中位数的学生
        for (i=0;i<n;i++)
        {
            if(stu[i].score[k-1] == mid)
            {
                printf("%d ",stu[i].id);
                for(j=0;j<m;j++)
                {
                    if(j<m-1)
                        printf("%d ",stu[i].score[j]);
                    else
                        printf("%d\n",stu[i].score[j]);
                }
            }
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月19日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题