java!c! 2023-07-11 11:25 采纳率: 100%
浏览 92
已结题

统计五个学生四门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,每门课程的平均分,最高分,最低分。

题目描述:统计五个学生四门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,每门课程的平均分,最高分,最低分。

#include<stdio.h>
int main()
{
    int id[5],course[5][4],total[5],ave[5],ave1[4],max[4],min[4];
    int i,j,sum=0;
    
    for(i=0;i<5;i++)
    {
        printf("请输入学生%d的学号:",i+1); 
        scanf("%d",&id[i]);
        printf("请输入学生%d的四门课程的成绩:",i+1);
        for(j=0;j<4;j++)
        {
        scanf("%d",&course[i][j]);
        total[i]=total[i]+course[i][j];
        }
        ave[i]=total[i]/4;
    }
    
    for(i=0;i<4;i++)
    {
        for(j=0;j<5;j++)
        {
            sum+=course[j][i];
            ave1[i]=sum/5;
        }
        sum=0;
    }
    
    
    for(j=0;j<4;j++)
    {
    max[0]=course[0][j];
    min[0]=course[0][j];
    }
    for(i=0;i<4;i++)
    {
        for(j=1;j<5;j++)
        {
        if(max[i]<course[j][i])
        max[i]=course[j][i];
        if(min[i]>course[j][i])
        min[i]=course[j][i];
        }        
    }
    
    //打印输出 
    printf("学号\t课程1\t课程2\t课程3\t课程4\t总分\t平均分\n");    
    for(i=0;i<5;i++)
    {
        printf("%d\t",id[i]);
        for(j=0;j<4;j++)
        printf("%d\t",course[i][j]);
        printf("%d\t",total[i]);    
        printf("%d\t",ave[i]);    
        printf("\n");
    }
    
    printf("平均分\t");
    for(i=0;i<4;i++)
    printf("%d\t",ave1[i]);
    printf("\n");

    printf("最高分\t");
    for(i=0;i<4;i++)
    printf("%d\t",max[i]);
        printf("\n");
    
    printf("最低分\t");
    for(i=0;i<4;i++)
    printf("%d\t",min[i]);    
        printf("\n");
           
    return 0;
}

为什么max可以正常输出,min就不可以,还有为什么第一个总分就输出错误,其他就正常输出(好像也不太正常)
运行结果是这样的

img

  • 写回答

2条回答 默认 最新

  • moyv 2023-07-11 11:52
    关注

    有两个地方不对

    
     for(j=0;j<4;j++)
        {
        max[0]=course[0][j];
        min[0]=course[0][j];
        }
        for(i=0;i<4;i++)
        {
            for(j=1;j<5;j++)
            {
            if(max[i]<course[j][i])
            max[i]=course[j][i];
            if(min[i]>course[j][i])
            min[i]=course[j][i];
            }        
        }
    
    

    每一个课程的max和min都是需要赋值的,而且不能赋值成随意的值,要赋值成这门课程所有输入数据中的任何一个
    遍历的时候要从索引0开始遍历
    这是完整代码

    
    #include<stdio.h>
    int main()
    {
        int id[5]={0},course[5][4]={0},total[5]={0},ave[5]={0},ave1[4]={0},max[4],min[4];
        int i,j,sum=0;
        
        for(i=0;i<5;i++)
        {
            printf("请输入学生%d的学号:",i+1); 
            scanf("%d",&id[i]);
            printf("请输入学生%d的四门课程的成绩:",i+1);
            for(j=0;j<4;j++)
            {
                scanf("%d",&course[i][j]);
                total[i]=total[i]+course[i][j];
            }
            ave[i]=total[i]/4;
        }
        
        for(i=0;i<4;i++)
        {
            for(j=0;j<5;j++)
            {
                sum+=course[j][i];
                ave1[i]=sum/5;
            }
            sum=0;
        }
        
        
        for(j=0;j<4;j++)
        {
            max[j]=course[0][j];
            min[j]=course[0][j];
        }
        for(i=0;i<4;i++)
        {
            for(j=0;j<5;j++)
            {
                if(max[i]<course[j][i])
                    max[i]=course[j][i];
                if(min[i]>course[j][i])
                    min[i]=course[j][i];
            }        
        }
        
        //打印输出 
        printf("学号\t课程1\t课程2\t课程3\t课程4\t总分\t平均分\n");    
        for(i=0;i<5;i++)
        {
            printf("%d\t",id[i]);
            for(j=0;j<4;j++)
                printf("%d\t",course[i][j]);
            printf("%d\t",total[i]);    
            printf("%d\t",ave[i]);    
            printf("\n");
        }
        
        printf("平均分\t");
        for(i=0;i<4;i++)
            printf("%d\t",ave1[i]);
        printf("\n");
        
        printf("最高分\t");
        for(i=0;i<4;i++)
            printf("%d\t",max[i]);
        printf("\n");
        
        printf("最低分\t");
        for(i=0;i<4;i++)
            printf("%d\t",min[i]);    
        printf("\n");
        
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)