学c菜鸟鸟 2022-12-10 11:11 采纳率: 75%
浏览 22
已结题

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

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

img

img

#include <stdio.h>
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;
   
}

  • 写回答

1条回答 默认 最新

  • a5156520 2022-12-10 11:49
    关注

    把获取分数的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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月10日