运行结果及详细报错内容:数不出正确的数,全是0#include <stdio.h,如何解决?

运行结果及详细报错内容:数不出正确的数,全是0

img

img

#include 
int main()
{ int i,j,sum,s;
  float g[4][6],aver[5];
  for(i=0;i<3;i++)
   { sum=0;
   for(j=0;j<5;j++)
   {
       scanf("%d",&g[i][j]);
       sum=sum+g[i][j];
       if(j==4) g[i][5]=sum/5.0;
   }
   }
   for(j=0;j<5;j++)
   { s=0;
       for(i=0;i<3;i++)
       {
           s=s+g[i][j];
           if(i==2) g[3][j]=s;
       }
   }
   for(i=0;i<4;i++)
   {
       for(j=0;j<6;j++)
       {
           printf("%d  ",g[i][j]);
           
       }
       printf("\n");
   } 
   printf("Average:\n");
   for(j=0;j<5;j++)
   { 
   aver[j]=g[3][j]/3.0;
  
   printf("%d  ",aver[j]);
   }
   return 0;
   
}

把获取分数的scanf()函数里的%d改为%f,因为分数是float类型;

再把两行打印分数的语句里的%d改为%.1f再试试,同样因为分数是float类型.

根据题目的格式,修改如下:

#include <stdio.h>
int main()
{ int i,j,s,sum;    
  float g[4][6],aver[5];
  for(i=0;i<3;i++)
   { sum=0;
   for(j=0;j<5;j++)
   {
       scanf("%f",&g[i][j]);
       sum=sum+g[i][j];
       if(j==4) g[i][5]=sum/5.0;
   }
   }
   for(j=0;j<5;j++)
   { s=0;
       for(i=0;i<3;i++)
       {
           s=s+g[i][j];
           if(i==2) g[3][j]=s;
       }
   }
   for(i=0;i<4;i++)
   {
       for(j=0;j<6;j++)
       {
               if(i==3&&j==5){
                   printf("   0");
            }else if(j==5||i==3){
                   printf("%5.1f  ",g[i][j]);
           }else{
                   printf("%5.0f  ",g[i][j]);
           }
       }
       printf("\n");
   } 
   printf("Average:\n");
   for(j=0;j<5;j++)
   { 
   aver[j]=g[3][j]/3.0;
   printf("%5.1f  ",aver[j]);
   }
   return 0;
}
 

img