C語言FOR語句嵌套
不需要大括號的,因為都是單語句,直接接再FOR循環后了,如果FOR語句后帶有幾個語句的話就需要大括號了,FOR循環的嵌套是底層首先有變化的
首先:第一個for循環k=0,然后第二個for循環n=0,然后就是第三個FOR循環m分別等于0和1輸出
其次:第一個FOR循環k=0,第二個for循環n=1,第三個for循環m分別等于0和1輸出
第三:第一個for循環k=1,第二個for循環n=0,第三個for循環m分別等于0和1輸出
第四:第一個for循環k=1,第二個for循環n=1,第三個for循環m分別等于0和1輸出
輸出結果就是:0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1
每三個數為一組來看就比較清楚了,還有注意的就是你的for循環的順序是k,n,m,而輸出的順序是m,n,k
注意看一下就可以了
c語言中for for 嵌套語句-搜狗問問
for(i=3;i>=1;i--)
{
for (j=1;j<=2;j++)
printf("%d",i+j);
printf("\n");
}
這是兩個for循環for(i=3;i>=1;i--)是外層循環,for (j=1;j<=2;j++)是內層循環,在內層循環中for (j=1;j<=2;j++) 做的事情就是先給j初始化為1,然后判斷j是否<=2,如果滿足條件,則執行
printf("%d",i+j); 然后執行j++,然后再判斷此時j是否<=2,如果滿足就執行 printf("%d",i+j); 否則就退出循環,一直這樣循環下去,但是記得,for (j=1;j<=2;j++)中的j=1,只在進入循環時執行一次,以后的循環過程不會執行它。當內層循環執行完退出循環時接著執行下面的語句 printf("\n");然后你把內層循環看成是一段語句,然后按照內層循環的分析方法去看外層循環就可以了。
關于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循環的執行順序走一遍。
就是這樣,你也可以在編程軟件中單步調試看看。
FOR語句嵌套
首先聲明一下:C語言不是很懂。本人在學Java。
根據嵌套for循環語句,最為流行的就是九九乘法表,代碼如下:
for(int i=1;i<10;i++)
{
for(int j=1;j<10;j++)
{
printf("%d%d",i*j);
}
printf(\n);//C語言的換行是這么寫的嗎?!
}
不知道printf語句寫對了沒?沒有環境編譯。
給您解釋下流程:
第一次for循環,i初始值為1,它進入里面內套的for循環,內套的for循環便開始了,結束后才會繼續回到外面的for語句。
那我們來看里面那個for循環:
j從1一直++到9后,程序會看到條件“j<10”時,循環就不再繼續了。就從內套的for循環中跳出來,下一句是換一行,然后“}”表示i=1的這次過程結束了,i++,返回進入下一個循環(即i=2),就這樣,i一直++到9后,因為i<10,所以for循環結束。程序結果就是:
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
上面是java語言編譯運行復制過來的:)
c語言for循環嵌套if語句
兩種方法,一種是重新賦值,程序段如下
for(i=0;i<Maxi;i++)
for(j=0;j<Maxj;j++)
if(true)
{
i=-1;
break; //從此處跳出本層循環,由于賦值i=-1,執行完
//break語句之后,執行外層循環i++指令,使得
//i=0;外層循環相當于重新開始,j的值無需處理,
//因每次進入內層循環,j值均會被for語句賦初值0
}
第二種方法是無條件轉移指令:
sign: for(i=0;i<Maxi;i++)
for(j=0;j<Maxj;j++)
f(true) goto sign; //條件為真跳轉至sign語句
一般情況下,應當避免使用goto無條件跳轉指令,因為很多人認為程序可讀性會因為goto的引入而變差,但是在不少情況下goto可以使得程序代碼簡單,效率提高,個人認為適當使用goto指令并無不可,樓主可自己作出選擇。
c語言for嵌套語句
這個讓人分析還真是比較郁悶的事情。
因為對于for的所謂分析,就是把for里循環變量的值一個個帶進去,一步步的看結果。解釋的時候只能大概說明這個for是干嗎的。
比如你這道題:for(j=i;j<=5;j++) printf("*");printf("\n");這個部分的作用是打出每行的*,并且在每行的最后進行回車。至于for(i=1;i<=7;i+=2)是講上面的輸出*的操作執行3遍,直觀效果就是打印3行倒著輸出還是比較簡單的,你自己理解下,多動手寫寫看。
很容易寫出來的。