A. 關於c語言的for語句嵌套問題
要弄懂這個問題首先要明確for語句的括弧裡面的東西都是什麼意思:
for(j
=
i
+
1;
j
<
10;
j++
)
第一個分號前的j
=
j
+
1這句的意思是初始化循環變數j。那啥叫循環變數呢?就是跟循環相關的變數,給定一個循環變數,再規定它的初始值和結束值,再規定好它每次循環增加(或減少)多少,那麼你就可以控制這個循環會循環多少次了。
第一個分號和第二個分號之間的j
<
10這句的意思是規定了j的結束值。
最後一個分號之後的j++這句的意思是j每次增加1。
然後要弄懂for語句究竟是怎麼執行的:
首先,執行第一句:j
=
i
+
1。打個比方,i現在是3,那麼j
=
3
+
1,即j現在是4。(初始化循環變數)
然後,執行第二句:j
<
10。這個語句的作用是判斷循環變數是否超過了結束值10,如果超過了就跳出這個循環,否則就接著執行下面的語句。現在j是4,所以不會結束這個循環。(判斷循環變數)
然後,程序進入循環體,也就是每次循環都要幹嘛,這才算真正進入了循環。(執行循環體)
最後,當運行完循環體中的語句後,執行j++。這句的作用是把循環變數j增加1,這樣j就變成5了,如果沒有這一句的話,那麼j永遠都是4,永遠都小於10,,那麼程序永遠都不會跳出這個循環,這就變成死循環了。(改變循環變數)
好了,現在來回答你的問題:
當然不是你所說的那樣,請注意/*2的那條for語句,裡面循環變數j的初始化值是i+1,也就意味著這層循環究竟要循環多少次與i有關,而i是外層循環的循環變數,外層的循環每次都會i++,所以j每次的初始化值都不同,是1,2,3,4,5,6,7,8,9,10。所以相應地,內層循環每次循環的次數都不一樣,是10-1=9,10-2=8,7,6,5,4,3,2,1,0。你可以把自己當做編譯器按照for循環的執行順序走一遍。
就是這樣,你也可以在編程軟體中單步調試看看。
B. c語言的for循環嵌套怎麼執行的
結果如圖,有140個a,for循環嵌套進行,每次先進行了完了一次內部循環,再進行外部循環,例如
for(i=0;i<5;i++)for(j=0;j<5;j++)每次執行一次第一個i的循環,就會執行五次j的循環。
還有,你的程序有一點錯誤:getch()是定義在庫函數conio頭文件中的,所以開頭加上#include<conio.h>就行了
不知道我的回答你是否滿意。
C. C語言中多個for執行的順序是什麼
假如是 for(i=1;i<=3;i++)
for(j=1;j<=2;j++)
for(k=1;k<=2;k++)
我就這樣簡寫了啊,他是這樣執行的:先是i=1,j=1,k=1,循環完一次之後,k加1,然後是1,1,2(按照i,j,k的順序)。循環完之後,k接著加1,是1,1,3,不滿足,第三個for循環結束,向上走,J加1,,循環結果是1,2,,1.記住,此時K又回到1,再執行K的循環。那下面就是1,2,2
等到J加到3時,不滿足條件,i要加1循環結果為2,,1,1。J、K又變為一,再循環。2,1,2 2,2,2 3,1,1, 3,1,2, 3,2,1 3,2,2
所以總的循環結果為
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
2 2 2
3 1 1
3 1 2
3 2 1
3 2 2
不知道您有沒有看懂,有問題再追問吧。
D. c語言中 for循環嵌套的運算流程
1.
for循環的一般形式為:
for(表達式1;
表達式2;
表達式3){
語句塊
}
2.
它的執行過程如下:
1)
先求解表達式1。
2)
求解表達式2,若其值為真(非0),則執行循環體,否則結束循環。
3)
執行完循環體,再求解表達式3。
4)
重復執行步驟
2)
和
3),直到循環結束。
注意:表達式1僅在第一次循環時求解,以後都不會再執行,可以認為這是一個初始化語句。
3.
for循環的執行過程可用下圖表示:
4.
比如我們用for循環來計算1加到100的值:
#include
int
main(){
int
i,
sum=0;
for(i=1;
i<=100;
i++){
sum+=i;
}
printf("%d\n",sum);
return
0;
}
運行結果:
5050
代碼分析:
1)
執行到
for
語句時,先給
i
賦初值1,判斷
i<=100
是否成立;因為此時
i=1,i<=100
成立,所以執行循環體。循環體執行結束後(sum的值為1),再計算
i++。
2)
第二次循環時,i
的值為2,i<=100
成立,繼續執行循環體。循環體執行結束後(sum的值為3),再計算
i++。
3)
重復執行步驟
2),直到第101次循環,因為此時
i
的值為101,i<=100
不成立,所以結束循環。
E. c語言,求執行步驟,嵌套循環不太懂(好幾for在一起),單獨一個for()語句內的運算順序我知道的
第一個for是輸出排序前的結果
中間兩個for循環是利用雙層循環做冒泡排序
外層循環控制比較的輪數,內層循環是控制每一輪的比較
這個程序是你們老師寫的?
排序的地方寫錯了,
外層循環多了一輪,10個數只要9輪
內層循環第一次循環會用
a[j]和a[10]比較
a[10]數組已經越界了。
最後一個for是輸出排序後的結果
F. c語言的循環嵌套是先運行最裡面的循環在依次往外循環
所有的語言都是順序執行的,自上而下,自左而有。程序從外循環執行下去,遇到內循環後就執行內循環語句。內循環語句執行完成後,繼續往下執行,遇到外循環的語句時,進入下一次外循環。
G. C語言問題,請問for的多層循環執行順序是怎麼樣的
for循環要包含{},裡面的都要執行。
但是for() XXX;只執行XXX,XXX後面的不算循環體內。
13行執行完成以後,再執行14行。
H. C語言for嵌套怎麼執行
1.你的問題直接答案:先執行完所有內循環,再執行外循環,然後k=i;再進入內循環。內循環執行完成後再到外循環。
2.流程式控制制:順序,選擇,循環(流程式控制制都看不懂,學編程語言學不會的)。
簡單解析你的問題:
先外循環for(i=0(只執行一次);i<n(成立進入內循環所在代碼塊);i++
{
k=i;
for(j=i+1;j<n;j++)//這個內循環執行完成後,跳到外循環i++,再到外循環的控制循環的語句i<n(如果成立),又一次進入內循環所在的代碼塊。
//語句;
}
3.不懂可以繼續問,不幫你弄懂說明我的理解不深刻。
I. c語言中for循環嵌套的執行順序疑問
/*你的程序有錯,改過來之後就好理解了*/
#include<stdio.h>
intmain()
{
inti;
inta[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/*這里末尾多了一個分號,所以是空循環
for(i=0;i<10;i++);
printf("%d",a[i]);
修改如下:*/
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
for(i=9;i>=0;i--)
printf("%d",a[i]);
return0;
}