关于C语言的执行问题
/*计算学生的总成绩*/ void sum_score()
{
int i,j; /*循环控制变量*/
printf("输出学生的总成绩:\n");
for (j=0; j<N; j++)
{
sum_sc[j]=0;
for (i=0; i<4; i++)
sum_sc[j]+=score[j][i];
printf("学生%s的总成绩是:%.2f\n",student[j],sum_sc[j]);
}
}
/*对学生的成绩进行排名,以平均成绩为例*/
void sort()
{
int i,j,temp,location; /*循环控制变量*/
float max,sc; /*比较用中间变量*/
float aver[N];
int flag;/*排序是否交换的标志*/
int sor[N];/*记录排序的位置*/
for (j=0; j<N; j++)
{
sor[j]=j;
sc=0.0;
for (i=0; i<4; i++)
sc+=score[j][i];
aver[j]=sc/4;
}
for (i=0; i<N; i++) /*对学生平均成绩进行排序*/
{
flag=0;
max=aver[i];
location=i;
for (j=i+1; j<N; j++)
{
if (aver[j]>max)
{
max=aver[j];
flag=1;
location=j;
}
}
if(flag==1)
{
aver[location]=aver[i];
aver[i]=max;
temp=sor[i];
sor[i]=sor[location];
sor[location]=temp;
}
}
printf("排序后的结果是:\n");
for(i=0;i<N;i++)
{
printf("第%d名 学号%d 姓名%s",(i+1),sor[i],student[sor[i]]);
printf("%f\n",aver[i]);
}
}
补充,N为10
for(j=i+1;j<N;i++){}那里到if (flag==1){}下面的语句,是怎么样执行的是把上面的那个for(j=i+1;j<N;i++){}执行完再执行if(flag==1){}那个语体,还是当for(j=i+1;j<N;j++){}执行完后再执行if(flag==1)?如果是前者的话那么max永远被赋值aver[9]?