你好,请教一下关于循环和循环嵌套的问题?

我老是把循环搞不好,请问for语句的流程里,表达式2的值为假的时候,就跳出循环,那么他下面的if语句是此时执行,还是每一次循环都执行?
.........
{...
for(1;2;3)
s;
if()
}
上面的式子里面,if是在for里的2为假的时候执行,还是不论什么时候都执行?
-------------
更进一步是关于循环嵌套的问题,我老是搞不清楚它的流程是怎么样的?
for的嵌套,请高手把流程给我详解一下.
比如
for(i=0;i<a;i++)
{...
for(j=0;j<b;j+)
s;
....
}
这种类型,外层for先执行一次,然后等内层循环b次以后,再执行第i+1次外层吗?
以上问题我主演的目的是想弄清楚那个选择排序的一个小问题---把数从小到大排列,方法是把第一个数和数组里最小的数比较,然后把最小数放到最前面.
#inclue
#define N 7
main()
{
int i,j,k,temp;
int a[N];

for(i=0;i<N;i++)
scanf("%d",&a[N]);
for(i=0;i<N-1;i++) /*这里他说排序开始,我知道这里为什么要这样给条件呢?我用i=N-1;i>0;i--不行马?*/
{
k=i;
for(j=i+1;j<N;j++)
if(a[k]>a[j])
k=j;
if(i!=k) /*这里的if是什么什么时候执行?是j<N为假的时候执行,还是每次循环完都执行?*/
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
for.........../*输出结果了*/
以上程序另我头昏的地方就是
1.循环嵌套的流程.
2.在"开始排序"的循环里面,如果每次都执行交换位置,那么还比较什么?不是依次换位么?k=j这一附值会在a[k]>a[j]的起什么作用呢?
----------------
可能我说的太头昏了,因为我已经头昏了,请高手帮我解释一下那个排序程序的流程,特别是嵌套那一节

还有就是请教一下,for里面的条件是怎么确定的?
------
拜托了~~~请一定把循环这里给我详细的讲一讲!!!!!
3楼和4楼的高手答案都很好啊。。。我现在对这个循环基本懂了。。




慕容708150
浏览 262回答 2
2回答

绝地无双

第一个问题;if是在for里的2为假的时候执行应该是先执行完for(1,2,3)后再执行if语句,因为"for(1;2;3) s;"是一个循环体而"if()"在它外面,只有在for里的2为假的时候循环才结束接下来按顺序执行,for里的2为真时继续执行循环.如果要每次循环时执行则应改为:for(1;2;3){s;if()}你可以在调试时具体的看看它是怎么执行的"这种类型,外层for先执行一次,然后等内层循环b次以后,再执行第i+1次外层吗?"回答是肯定的/*这里他说排序开始,我知道这里为什么要这样给条件呢?我用i=N-1;i>0;i--不行吗?*/可以但后面的应该改改,否则就成了 从大到小排列了/*这里的if是什么什么时候执行?是j<N为假的时候执行,还是每次循环完都执行?*/如前所述是j<N为假的时候执行for里面的条件是怎么确定的? 看情况而定
打开App,查看更多内容
随时随地看视频慕课网APP