为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容708150 2021-05-30 17:13:36
我老是把循环搞不好,请问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 7main(){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楼的高手答案都很好啊。。。我现在对这个循环基本懂了。。
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

第一个问题;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里面的条件是怎么确定的? 看情况而定



查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 256 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信