tft每日頭條

 > 科技

 > for循環定義數組c語言

for循環定義數組c語言

科技 更新时间:2024-07-21 09:18:21

for循環定義數組c語言?雖說是多層,事實上 for 循環嵌套的層數也不能太多通常為兩個 for 循環的嵌套,超過兩個的極少使用,我來為大家講解一下關于for循環定義數組c語言?跟着小編一起來看一看吧!

for循環定義數組c語言(C語言for循環嵌套詳解)1

for循環定義數組c語言

雖說是多層,事實上 for 循環嵌套的層數也不能太多。通常為兩個 for 循環的嵌套,超過兩個的極少使用。

與單個 for 循環相比,多個 for 循環的嵌套在邏輯上更複雜一點,但并不難懂。

直接給大家寫一個程序:

#include <stdio.h> int main(void) { int i, j; for (i=0; i<4; i) { printf("問世間情是何物, 直教生死相許\n"); for (j=0; j<3; j) { printf("兩情若是久長時, 又豈在朝朝暮暮\n"); } } return 0; }

輸出結果是:

問世間情是何物, 直教生死相許

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

問世間情是何物, 直教生死相許

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

問世間情是何物, 直教生死相許

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

問世間情是何物, 直教生死相許

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

兩情若是久長時, 又豈在朝朝暮暮

=============

其實,多層 for 循環嵌套的執行過程與單個 for 循環的執行過程是一模一樣的。多層 for 循環的嵌套隻不過是将單個 for 循環大括号中的“語句”換成了 for 循環而已。

下面看看上面程序中兩個 for 循環嵌套是怎麼執行的。

1) 首先求解表達式 1,即給變量 i 賦初值,i=0;表達式 1 隻執行這一次,下面都不會再執行了。

2) 然後求解表達式 2,即 0<4 成立,則執行 for 循環中的内嵌語句:

printf("問世間情是何物, 直教生死相許\n");

for (j=0; j<3; j)

{

printf("兩情若是久長時, 又豈在朝朝暮暮\n");

}

====================

首先 “printf("問世間情是何物,直教生死相許\n")”,然後執行内部 for 循環,對這個 for 循環再次應用“單個 for 循環”的執行過程:

★ 首先求解表達式 1,即給變量 j 賦初值,j=0。

★ 然後求解表達式 2,即 0<3 成立,則執行 for 循環中的内嵌語句,即 “printf("兩情若是久長時,又豈在朝朝暮暮\n");”。

★ 然後執行表達式 3,變量 j 自加 1,即變量 j 由 0 變為 1。

★ 然後求解表達式 2,即 1<3 成立,則執行 for 循環中的内嵌語句,即“printf("兩情若是久長時,又豈在朝朝暮暮\n");”。

★ 然後執行表達式 3,變量 j 自加 1,即變量 j 由 1 變為 2。

★ 然後求解表達式 2,即 2<3 成立,則執行 for 循環中的内嵌語句,即“printf("兩情若是久長時,又豈在朝朝暮暮\n");”。

★ 然後執行表達式 3,變量 j 自加 1,即變量 j 由 2 變為 3。

★ 然後求解表達式 2,即 3<3 不成立,則内部的循環結束。對内部的 for 而言循環是結束了,但對外部的 for 而言,“for 循環的執行”過程才執行到表達式 3。

3) 然後執行表達式 3,變量 i 自加 1,即變量 i 由 0 變為 1。

4) 然後再求解表達式 2……

……

就這樣一直循環下去,直到外層循環結束,整個循環才結束。

總之,不管是單個 for 循環還是多個 for 循環的嵌套,它們的執行過程是一樣的。隻不過如果是“多個 for 循環的嵌套”,則其執行過程也是嵌套的。

for循環嵌套編程練習1、求出 1! 2! 3! … n!的和。

對于這個程序前面用一個for編程也可以實現,但是邏輯性太強,現在再用for循環嵌套編程實現一下:

#include <stdio.h> int main(void) { int n = 0; //存儲1! 2! 3! … n!中n的值 int i = 0, j = 0; //循環變量 int m = 1; //用于計算每個數的階乘 unsigned long sum=0; /*階乘的值往往很大, 定義成long型。雖然如此, 下面輸入的n的值也不能太大, 不然long也放不下*/ printf("請輸入n的值:"); scanf("%d", &n); for (i=1; i<=n; i) { for (j=1; j<=i; j) //求一個數的階乘 { m = m*j; } sum = sum m; //求完之後就立即把它加到sum中 m = 1; } printf ("sum = %ld\n", sum); return 0; }

==========

輸出結果是:

請輸入n的值:10

sum = 4037913

我們看到 n 的值僅為 10 結果就這麼大,要再大點 long 類型肯定是存放不了的。此外,有人可能會糾結這樣的問題,程序開頭定義那麼多變量,可是我寫的時候怎麼知道後面要用到哪些變量呢?

其實,這些變量都不是剛開始寫程序的時候就定義的,大多數情況下都是“若剛開始知道定義哪些變量那麼就定義上,如果不知道那就不定義,等到後面需要用再回到前面進行定義”,這才是正常的邏輯。

2、求出用 50元、20元 和 10元換算 100元有幾種方式?

思路:用窮舉法, 将所有可能的情況都列出來, 用 for 循環可以實現窮舉

分析:100 元單用 50 換算, 最多需要兩張;用 20 元換算, 最多需要五張;用 10 元換算最多需要十張

#include <stdio.h> int main(void) { int w, e, s; //w代表wushi;e代表ershi;s代表shi for (w=0; w<=2; w) { for (e=0; e<=5; e) { for (s=0; s<=10; s) { if (100 == 50*w 20*e 10*s) { printf("%d %d %d\n", w, e, s); } } } } return 0; }

=========

輸出結果是:

0 0 10

0 1 8

0 2 6

0 3 4

0 4 2

0 5 0

1 0 5

1 1 3

1 2 1

2 0 0

3、“百錢買百雞”是中國古代一個著名的枚舉法題目。

所謂枚舉就是将所有可能的情況全部列出來的意思。for 循環嵌套是實現枚舉的一種手段,上面的換算也是一種枚舉。假設公雞 5 元一隻,母雞 3 元一隻,小雞 1 元 3 隻,現在給你 100 元,要你買回 100 隻雞,求出公雞、母雞、小雞分别為多少隻。

#include <stdio.h> int main(void) { int x, y, z; //x、y、z 分别表示公雞、母雞、小雞 for (x=0; x<20; x) { for (y=0; y<33; y) { z = 100 - x - y; //小雞也可以用循環,但是能用二層循環解決的就不要用三層。 if ((0 == z%3) && (100 == 5*x 3*y z/3)) //将 0==z%3 放前面更好,因為 && 是“短路與”,前面不成立後面就不會執行了,所以把計算量小的放前面。 { printf("x = %d, y = %d, z = %d\n", x, y, z); } } } return 0; }

==========

輸出結果是:

x = 0, y = 25, z = 75

x = 4, y = 18, z = 78

x = 8, y = 11, z = 81

x = 12, y = 4, z = 84

==================================

for循環嵌套我們就學習到這裡。

如果你還想更深入地學習以及其他知識,不管你是轉行也好,初學也罷,進階也可~

【值得關注】我!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved