| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:关于C语言的执行问题
只看楼主 加入收藏
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
收藏
 问题点数:0 回复次数:2 
关于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]?
搜索更多相关主题的帖子: C语言 总成绩 
2007-05-02 04:38
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
收藏
得分:0 
2007-05-02 04:44
bolong
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-7
收藏
得分:0 

先执行完for(j=i+1;j<N;i++){},再执行if(flag==1){}.这个是内循环.意思是找到大数,就把大数的下标给location.配合外循环,实现排序.

2007-05-07 23:07
快速回复:关于C语言的执行问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011012 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved