您好,登錄后才能下訂單哦!
這期內容當中的小編將會給大家帶來有關C語言中for循環語句的用法,以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
for循環是編程語言中一種開界的循環語句,而循環語句 由循環體及循環的終止條件兩部分組成,for循環其在各種編程語言中的實現與表達有所出入,但基本為以C語言和pascal語言代表的兩種形式。
for 循環語句的一般形式為:
for (表達式1; 表達式2; 表達式3) { 語句; }
首先要強調兩點:
1) 表達式1、表達式2和表達式3之間是用分號;隔開的,千萬不要寫成逗號。
2) for(表達式1;表達式2;表達式3)的后面千萬不要加分號,很多新手都會犯這種錯誤——會情不自禁地在后面加分號。
因為 for 循環只能控制到其后的一條語句,而在C語言中分號也是一個語句——空語句。所以如果在后面加個分號,那么 for 循環就只能控制到這個分號,下面大括號里面的語句就不屬于for循環了。
下面來看看它的執行過程:
求解表達式1。
求解表達式2。若其值為真,則執行for語句中指定的內嵌語句,然后執行第3步;若表達式2值為假,則結束循環,轉到第5步。
求解表達式3。
轉回上面第2步繼續執行。
循環結束,執行 for 語句下面的語句。
從這個執行過程中可以看出,“表達式1”只執行一次,循環是在“表達式2”“表達式3”和“內嵌語句”之間進行的。
for語句最簡單的形式是:
for (循環變量賦初值; 循環條件; 循環變量增值) { 語句; }
C語言的四種運行模型(箭頭表示循環方向):
(1)三角基本模型:
例子:
(2)中間循環體被省略得只剩下";"空語句時的左右往返模型:
條件表達式?末尾循環體
例子:
(3)末尾循環體被省略后的上下往返模型:
條件表達式
↓↑
中間循環體
(4)條件表達式被省略得只剩下";"空語句時,中間循環體或末尾循環體帶有跳出語句時的模型
看完上面四個模型后,你會發現其實它的完成的都是同一個問題,但可以寫成這么多種模型,當然了,這只是省略其中一個語句的模型,你也可以仿照著侵略得只剩下一個語句都可以,前提是不要搞成死循環!
下面給大家寫一個程序,求 1+2+3+4+…+100 的總和。
# include <stdio.h> int main(void) { int i; int sum = 0; //sum的英文意思是“總和” for (i=1; i<=100; ++i) //++是自加的意思, ++i相當于i = i + 1 { sum = sum + i; /*等價于sum += i;但是不建議這么寫, 因為sum = sum + i看起來更清楚、更舒服*/ } printf("sum = %d\n", sum); return 0; }
輸出結果是:
sum = 5050
這個程序的功能是實現求 1+2+3+4+…+100 的和,如果不用循環,加一次就要一條語句,加 100 次就要 100 條語句。這里是從 1 加到 100,要是從 1 加到 10000 那就要 10000 條語句。但有了循環就很方便了,你想加到多少就加到多少,只要改一個參數就可以了。所以循環很重要。
下面按照執行過程看看上面這個程序是怎樣執行的。
1、首先定義一個循環變量 i。定義的時候可以不給它賦初值,在 for 循環里面再給它賦初值也行。但前面說過,最好在定義變量的時候就對它進行初始化,如果值不確定就初始化為 0。所以程序中也可以在定義 i 的時候就給它賦初值,那么 for 循環里的“表達式1”就可以省略了,但分號不可以省略。
這樣的話,執行的時候就跳過第1步,直接進入第2步,其他的不變。所以程序也可以像下面這樣寫:
# include <stdio.h> int main(void) { int i = 1; int sum = 0; for (; i<=100; ++i) { sum = sum + i; } printf("sum = %d\n", sum); return 0; }
當然表達式1加上也行,大不了再重新賦一次值。
2、然后定義一個用來存放“和”的變量 sum,并給它賦初值 0,然后進入 for 循環:
首先求解表達式1,即給變量i賦初值,i=1;表達式1只執行這一次,下面都不會再執行了。
然后求解表達式2,若 1<=100 成立,則執行 for 循環中的內嵌語句,即 sum=0+1。
然后執行第3步,變量 i 自加 1,即變量 i 由 1 變為 2。
然后再求解表達式2,2<=100 成立,則執行 for 循環中的內嵌語句,sum=0+1+2。
然后再執行第3步,變量 i 自加 1,即變量 i 由 2 變為 3。
然后再求解表達式2,即 3<=100 成立,則執行 for 循環中的內嵌語句,sum=0+1+2+3。
……
就這樣一直循環下去,直到 ++i 等于 100 的時候,求解表達式2,即 100<=100 成立,則執行 for 循環中的內嵌語句,sum=0+1+2+3+…+100。
然后再執行第3步,變量 i 自加 1,即變量 i 由 100 變為 101。然后再求解表達式2,即 101<=100 不成立,則結束循環,執行 for 循環下面的語句即 printf。
以上就是這個程序的執行過程。關于 for 語句的代碼規范化問題,有兩點要再跟大家強調一下:
1)if、else、for、while、do 都只能控制到其后的一條語句,如果要控制多條語句必須加大括號{}。但基于代碼規范化,if、else、for、while、do 后面的執行語句不論有多少行,就算只有一行也要加{}。
2) 像 if、for、while 等關鍵字之后應留一個空格再跟左括號(,以突出關鍵字。
此外上面的程序還有一個知識點要跟大家說一下:從功能上講,for(i=1; i<=100;++i)
完全可以寫成for(i=1; i<101; ++i)
,而且建議大家盡量使用這種寫法。也就是說,循環語句的循環條件盡量寫成半開半閉的,不管是 for 循環還是 while 循環。
for(i=1; i<101; ++i)
實際上是 1≤i<101
,是半開半閉的;而for(i=1; i<=100; ++i)
實際上是 1≤i≤100
,是全閉的。那么為什么建議使用半開半閉的呢?因為如果寫成 i<=100 的話,那么每次判斷的時候都要判斷兩次,即 i<100 和 i==100,而寫成 i<101 的話每次只需要判斷一次。
下面再給大家寫一個程序,求 1 到 100 之間所有奇數的和。
# include <stdio.h> int main(void) { int i; int sum = 0 ; for (i=1; i<100; i+=2) //i+=2;等價于i = i + 2; { sum = sum + i; } printf("sum = %d\n", sum); return 0; }
輸出結果是:
sum = 2500
上述就是小編為大家分享的C語言中for循環語句的用法了,如果您也有類似的疑惑,不妨礙參照上述分析進行理解。如果想了解更多相關內容,請關注億速云行業資訊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。