C语言-编程实战练习题

我想要统计每门课程的合格率,但出来的结果不是我需要的,有谁可以指导一下吗?

#include 
#define M 4
#define N 5
// course[m][N]存放该课程的合格率
int main()
{
    float score[M], add[N] = { 0 }, k[M] = { 0 }, t, a[N] = { 0 };
    int i, j;
    for (i = 0; i < N; i++)
    {
        add[i] = 0;
        printf("输入第%d个学生4门课程的成绩\n", i + 1);
        for (j = 0; j < M; j++)
        {
            scanf_s("%f", &score[j]);
            add[i] += score[j];
            k[j] += score[j];
        }
    }
    for (i = 0; i < N; i++)
        printf("第%d个学生总分:%.1f、平均分:%.1f\n", i + 1, add[i], add[i] / M);
    for (j = 0; j<M; j++)
        for (i = 0; i<M - j; i++)
            if (add[i]1])
            { 
                t = add[i]; add[i] = add[i + 1]; add[i + 1] = t; 
            }
    for (i = 0; i<N; i++)
        printf("第%d名的平均分数为%.2f\n", i + 1, add[i] / M);

    for (i = 0; i < M; i++)
        printf("第%d门课的平均成绩:%.1f\n", i + 1, k[i] / N);
        float course[4][N + 2] = { 0 };
        //依次处理4门课程 
        for (i = 0; i < N; i++) {
            int passed = 0;
            for (j = 0; j < M; j++) {
                if ( score[j]>= 60) 
                {
                    passed++;
                }
                course[i][N] = 100 * passed / N;
            }
        }
        for (i = 0; i < 4; i++) {
            printf("%d: Passed=%.2f\n", i + 1, course[i][N]);
        }
}

```

你的add和k里存的东西都一样啊
你需要一个二维数组来存成绩,行里存的是同一个学生不同科目的成绩,列里存的是同一个科目不同学生的成绩,这样才对
否则全是一维数组,后面的数据不停的将前面的数据覆盖了,信息都没了呀