在程序运行时第一行输入后本该换行却直接输出结果

程序要求是:输入共n+1行。第一行,一个整数n,表示总共有n个学生。接下来的 n 行中,第i+1行表示编号 i 的学生成绩,包含三个整数 a ,b ,c,每两个整数之间用一个空格隔开。
#include<stdio.h>
int main()
{
int n,i,j,b[n][3],t;
float a[n];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d%d",&b[i][1],&b[i][2],&b[i][3]);
a[i]=b[i][1]*0.2+b[i][2]*0.2+b[i][3]*0.6;
}
for(j=1;j<n;j++)
for(i=0;i<j;i++)
if(a[i]<a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
for(i=0;i<n;i++)
printf("%.1f\n",a[i]);
}

img

img