m0_74732064 2022-12-26 15:09 采纳率: 100%
浏览 16
已结题

C语言-计算机编程综合练习题


#include <stdio.h>
#define M 4
#define N 5
int main()
{
    float score[M], add[N] = { 0 }, k[M] = { 0 }, t, a[N] = { 0 },passed = 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]);
            a[i] = 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]<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);
    for(i=0;i<N;i++)
    {
        if (a[i]> 60)
            passed++;
        
    }
    for (j = 0; j < M; j++)
    printf("第%d门课的合格率:%.1f\n", j + 1, passed/ N);
}

我想要计算每门课的合格率,但结果是这样的:

img


代码错在哪里了呢?

  • 写回答

4条回答 默认 最新

  • ShowMeAI 2022-12-26 15:30
    关注

    修改后的完整代码实现如下,望采纳

    #include <stdio.h>
    #define M 4
    #define N 5
    int main()
    {
        float score[M], add[N] = { 0 }, k[M] = { 0 }, t, a[N] = { 0 };
        int i, j;
        int passed[M] = { 0 }; // 新增的数组,记录每门课的通过人数
        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]);
                a[i] = score[j];
                add[i] += score[j];
                k[j] += score[j];
                if (score[j] > 60) passed[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]<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);
        for(i=0;i<M;i++)
        {
            printf("第%d门课的合格率:%.1f\n", i + 1, passed[i] / (float) N);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用