for 循环中的那三行并排的输入语句 错了吗?

#include
#include
struct Student
{
int num;
char name[20];
float score;
};
int main()
{
struct Student stu[100];
struct Student t;
int i=0,n;
int j,k;
scanf("%d",&n);
for(;i<n;i++)
{
scanf("%d",&stu[i].num);
gets(stu[i].name);
scanf("%.2f",&stu[i].score);
}

for(i=0;i<n-1;i++)
{
    k=i;
    for(j=i+1;j<n;j++)
        if(stu[j].score>stu[k].score)
            k=j;
    t=stu[k];
    stu[k]=stu[i];
    stu[i]=t;

}
for(i=0;i<n;i++)
{
    printf("%3d %5s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
}

}

是不是没达到你的效果?语句错没错,编译就知道。

输入语句?
printf("%3d %5s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
你说的是这个输出语句么?没问题。