为什么错了1111111

为什么这个学科平均分算不对呢

img

img


1111111111111111111111111111111111111111111111111111111111111111111111111

因为计算每科平均分时,那个总分SUM的初始化放在了计算3个学生同一科成绩的循环中,所以导致计算错误,把这个SUM的初始化提到这个循环之前即可,修改如下:

#include <stdio.h>

int main(void){
    
    float stu[4][3]; //存储3个学生的四门功课的成绩 
    float av=0,sum=0;
    float SUM =0 ,AV=0;
    int u=0,i=0;
    for(u=0;u<3;u++){ //遍历每一列,分别给3个学生存储成绩 
        sum=0;
        av=0;
        
        for(i=0;i<4;i++){ //遍历每一行,然后在同一列依次存储一个学生的四门成绩 
            printf("输入第%d个学生的第%d门成绩:",u+1,i+1);
            scanf("%f",&stu[i][u]);
            sum+=stu[i][u];
            av=sum/4; 
        }
        
        printf("第%d个学生的成绩总和是%.2f,平均分是%.2f\n",u+1,sum,av);        
    }
    
    for(i=0;i<4;i++){  //遍历每一行,依次计算四门成绩的平均分 
        
        SUM=0; //每门功课的总分 ,每次计算前都置0 
        for(u=0;u<3;u++){ //每一行存储了同一门的成绩,共3个学生的成绩,累加其和,然后计算每门成绩的平均分 
            
            SUM+=stu[i][u];
            AV=SUM/3;
        }
        
        printf("第%d门的成绩平均分是%.2f\n",i+1,AV);
    }
    

    
    return 0;
}

img