我老是把循環搞不好,請問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里面的條件是怎么確定的? 看情況而定
添加回答
舉報
0/150
提交
取消