有沒有人來幫我看看C語言for迴圈問題

2022-11-05 19:01:33 字數 5791 閱讀 2419

1樓:匿名使用者

for迴圈的結構一般是這樣的:

for(迴圈變數賦值;迴圈繼續條件;迴圈變數變化)

迴圈內部的語句

其中的「迴圈內部的語句」如果是多句而不是一句,那麼需要用一對花括號將其包裹起來。

一般來說執行過程就是多次地反覆地執行「迴圈內部的語句」,而每次執行時迴圈變數的值會有變化,例如:

for( i=0; i<100; i++) printf("%d\n", i);

這裡會多次呼叫printf函式來列印數字,而每次列印的數字i的值是不同的(0, 1, 2, ..., 98, 99)。一般在「迴圈變數賦值」這裡,要給迴圈變數(例如上述例子中的i)賦一個初始值,也就是第一次執行「迴圈內部的語句」時i的值(也就是printf列印出的第一個數值:

0)。賦初始值後,就開始進入迴圈過程(開始第一次執行「迴圈內部的語句」)。每次執行完「迴圈內部的語句」之後,會執行「迴圈變數變化」處的語句,使得迴圈變數變數發生變化(例如上述例子中的i++),然後判斷現在的「迴圈繼續條件」是否為真,如果為真,那麼再次開始執行「迴圈變數變化」處的語句......

以此類推,迴圈往復。

在本題中,有三層迴圈的巢狀。我們先看看最內層:

for(c=0;c<=9;c++)

迴圈內部的語句

在最內層的迴圈中,不難看出,在每次迴圈中,c都會發生變化(每次增加1),而且c的範圍是0到9。在c從0到9逐漸變化時,a和b的值不會變化(因為最內層的迴圈處於上一層迴圈的「迴圈內部的語句」處。在執行「迴圈內部的語句」時,迴圈變數一般不發生變化。

迴圈變數的變化一般都發生在每次「迴圈內部的語句」執行結束之後)。

所以在最內層,第一次執行「迴圈內部的語句」時,各個變數的值為:

a=0,b=0,c=0

第二次執行「迴圈內部的語句」時,各個變數的值為:

a=0,b=0,c=1 (注意,a和b沒有變,只有c變化了)

第三次執行「迴圈內部的語句」時,各個變數的值為:

a=0,b=0,c=2 (注意,a和b沒有變,只有c變化了)

以此類推,接下來各個變數的變化為:

a=0,b=0,c=3

a=0,b=0,c=4

a=0,b=0,c=5

a=0,b=0,c=6

a=0,b=0,c=7

a=0,b=0,c=8

a=0,b=0,c=9

a=0,b=1,c=0 (為什麼變成這樣了呢?請注意,c從0到9,最內層的迴圈語句已經執行結束。在上一層看來,現在應該進行下一輪迴圈了,所以上一層的迴圈變數(也就是b)會增加1。

而最內層的迴圈會再次啟動,c從0開始)

a=0,b=1,c=1

a=0,b=1,c=2

a=0,b=1,c=3

a=0,b=1,c=4

a=0,b=1,c=5

a=0,b=1,c=6

a=0,b=1,c=7

a=0,b=1,c=8

a=0,b=1,c=9

a=0,b=2,c=0(為什麼變成這樣了呢?現在你應該已經理解了)

a=0,b=2,c=1

a=0,b=2,c=2

a=0,b=2,c=3

a=0,b=2,c=9

a=0,b=3,c=0(為什麼變成這樣了呢?現在你應該已經理解了)

a=0,b=9,c=6

a=0,b=9,c=7

a=0,b=9,c=8

a=0,b=9,c=9

a=1,b=0,c=0(為什麼變成這樣了呢?現在你應該已經理解了)

a=1,b=0,c=1

a=1,b=0,c=2

a=1,b=0,c=3

a=9,b=9,c=6

a=9,b=9,c=7

a=9,b=9,c=8

a=9,b=9,c=9

至此,已經將000到999的所有數字全都嘗試了一遍。

2樓:聽不清啊

#include

int main()

{ int a,b,c,abc,cba;

for(a=0; a<=9; a++)        //窮舉百位數for(b=0; b<=9; b++)       //窮舉十位數for(c=0; c<=9; c++)       //窮舉個位數{ abc=a*100+b*10+c;    //組成一個三位數cba=c*100+b*10+a;   //組成第二個三位數if(abc+cba==1333)    //如果符合條件printf("%d+%d=1333\n",abc,cba);    //就輸出

return 0;

關於c語言,多層巢狀的for 迴圈我真的看不懂怎麼辦? 例如這個程式設計:

3樓:軟體

巢狀就一層一層的執行,需要有必要的做些標記:例內如:

for(int i=0;i<4;i++)

for(int j=0;j<4;j++)

for(int k=0;k<4;k++)

printf(%d%d%d,i,j,k);

這個就是先 i=0——

容>j=0——>k=0 輸出:0 0 0i=0——>j=0——>k=1 輸出:0 0 1.......

*(當k的4次結束後,j就加1 k接著從0開始)i=0——>j=1——>k=0 輸出:0 1 0i=0——>j=1——>k=1 輸出:0 1 1...

(k的4次執行完後,j就再加1,成了2 )

.......*(當這樣迴圈j的4次也結束後,i就加1,成了1,而j還是從0開始,k亦從0開始,知道最後i變成4)...輸出:

4 4 4後結束,這樣說我覺得可以了,要是還有問題的話,可以再問,你只要耐心一點一步一步走就懂了。

4樓:吳唯寒萱

for()

{for()

}這是巢狀,也就是說for作為迴圈體。

for(){}

for(){}這是並列。

5樓:匿名使用者

最簡單的 數大括號就是了

6樓:匿名使用者

return o錯了,是return 0啊,零啊

7樓:債務危機

你不分行寫我也懶得看了。。。

8樓:非非冰弋

把格式調整好。。。 其實不難。靜下心來對照著輸出結果一句一句的分析就好

9樓:吳世雄天下

一層層的拆才開看就可以了。。

c語言 for迴圈,看不懂

10樓:匿名使用者

這個東西好像沒有什麼軟用,

初始值應該都是隻有一個,

應該是樓下說的偽**吧,

有時候程式設計師喜歡故弄玄虛,

你看下前面對l這個有沒有什麼生命的.

請採納.謝謝.

c語言for迴圈,一個例子看不懂,誰能幫忙解釋一下,謝謝。

11樓:匿名使用者

我覺得,書裡這種命名方式放到公司裡是要被批的體無完膚的。不過話說回來,咱還得硬著頭皮學不是。

其實最主要的是看懂每個變數表示什麼意思。

n是使用者輸入的數。然後迴圈n次。i依次等於[1,2,3,...,n]

這層迴圈還是比較好理解的。使用者輸入幾,就迴圈幾次其中 i 就表示第幾次迴圈了

然後是跟k和j相關的這一段內層迴圈:

k=1;

for(j=1;j<=i;j++)

k=k*j;

k初始值是1,然後內層迴圈 i 次,j表示內層迴圈到第幾次了。k依次等於上一次的k乘以j。

也就是說:

第1次內層迴圈執行完,k等於1。

第2次內層迴圈執行完,k等於1*2。

第3次內層迴圈之行完,k等於1*2*3。

執行i次。也就是k等於1*2*3*...*i。其實就是i!啦(i的階乘)。

重點:k等於i的階乘。

然後,sn+=k;就是sn表示i的階乘的累加。

最後,根據上面標黑的文字,應該能得出來結論了,這個程式是讓使用者輸入n,然後求1!+2!+3!+...+n!。

有人能幫我看看這個c語言入門演算法題我的**的錯誤嗎 5

12樓:數幻

你寫的你自己看得懂麼

#define _crt_secure_no_warnings#include

/* 分析問題:很明顯,小孩要到第n層需要到第n-1或n-2層,有a(n) = a(n-1)+a(n-2).

研究演算法:要求a(n)就是求a(n-1)+a(n-2),現在我們可以知道a(0)=1,a(1)=1.開始解題

*/int cul(int);

int cul(int num)

else

}void main()

}這是雙遞迴的做法,雖然不建議,因為演算法的複雜度太高,但總比你那個我看不懂好。

#define _crt_secure_no_warnings#include

void main()

else

printf("%llu\n",d);}}}這比遞迴就好多了。但遞迴易於實現。

c語言for迴圈問題,大家幫忙看下同一個程式!大括號不同!

13樓:

這種問題自己在ide中試下印象比較深;但是還是說下:第一個是for(j=1;j<=i;j++)

一個**段;也就是這個迴圈一次會執行**塊內的語句一次第二個是for(j=1;j<這塊是一個**段;也就是printf("\n");是外面的迴圈一次輸出一次;

第3個與第一個相同;

c語言關於for迴圈中使用scanf連續輸入的問題or not,求大神看看**。

14樓:聽不清啊

#include

int main()

for(i=0;i

return 0;}

15樓:匿名使用者

首先,c語言不能直接定義可變大小的陣列。也就是int d[i];這種寫法是不可以的。變通的方法是,估計一個可能的最大值作為陣列的大小,實際使用中,用多少算多少。

所以假設陣列不超過10000個元素,那麼就可以定義為int d[10000];

其次就是輸入中,不要用\0,一般來說,這個輸入不了,程式執行會出錯。改成scanf("%d%d",&a,&b); 即可。

進行了以上修改之後,**就沒其他問題了

一道c語言程式設計題,請看看我的****有問題,輸出是無限迴圈。 50

16樓:匿名使用者

#include

#include

#define n 20

bool judge (int a[ ], int n) /* 判斷每個孩子手中的糖果是否一樣多 */

void print(int src,int n){for(int i=0;i

17樓:木葉的呼息

程式裡面的gudgr函式每次被呼叫時只判斷了a[

0]和a[1]就返回了,函式呼叫結束

有沒有人能幫我改善下面板,有沒有人可以幫我分析下我的面板狀況啊,額頭上是粉刺嗎要怎麼護理,T區毛孔粗大髒東西很多,有什麼產品

我沒看錯的話,這應該是淤血痘,你應該有久坐不運動的習慣。你自己自查一下,看舌底下的靜脈是不是黑黑的。如果是,就是了。確認是了,抓下面這個方熬湯藥喝。桂枝15 茯苓15 赤芍15 丹皮15 桃仁15 連翹30每日一劑。分三餐服用。飯後服。大概一週消。煲藥方法,放1500ml水。先開大火。燒開水後,轉成...

有沒有人失戀啊,有沒有人失戀啊 ???

怎麼會沒有人失戀呢?我昨天剛被甩的,談了3年了.其實沒什麼 方法,都是圖個心理安慰,最好的就是時間,時間可以沖淡一切,只是要看你用來忘記她的時間夠不夠長.不要總去想了,面對現實,重新尋找自己的幸福吧.失戀沒什麼,全世界平均每秒鐘就有2 3對兒戀人分手,想開點,失戀是因為你在為下一段更好的感情作準備,...

有沒有人能幫我看看這個玉鐲能值多少錢

翡翠a貨手鐲,糯種飄花,棉稍多水頭一般。無紋裂實價2000附近,最高不超3000。有沒有懂行的來看看這個玉鐲能多少錢 看美女漂不漂亮,得來個相片之類的吧。沒有見到玉鐲的 沒法評價。玉鐲價值依據玉的品種 質地 做工等因素綜合決定的。麻煩懂玉的人幫我看看這個玉鐲值多少錢?你好,我想問問 有沒有證書 另外...