编辑代码

#include <stdio.h>
#include<string.h>

int main (){
    int n,m;
    scanf("%d %d\n",&n,&m); //输入n个学生,m门科目

    int student[n][m];//n行 ,m列,算每门科目平均分算每列的再除以n

    int subject; //每门科目总分
    int gift=0;//礼物数
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d",&student[i][j]);
        }
    }

    //计算每门的均分
    for(int j=0;j<m;j++)
    {
        //错误点1:对每门科目应该把上次的值清0
        subject = 0;
        for(int i=0;i<n;i++)
        {
            subject += student[i][j];
        }
        float average = (float)subject / n;//优化点1:可以转float型

        //错误点2:学生的比较应该在此循环内
        for(int i=0;i<n;i++)
        {
            if(student[i][j]>average)
            {
                gift ++;

            }
        }
    }
    // for(int j=0;j<m;j++)
    // {
    //     for(int i=0;i<n;i++)
    //     {
    //         if(student[i][j]>subject[j])
    //         {
    //             gift++; //如果这门有人大于均分,就送礼物
    //         }
    //     }
    // }
    printf("%d",gift);
}