首頁 >後端開發 >C#.Net教程 >C語言中for用法是什麼?

C語言中for用法是什麼?

coldplay.xixi
coldplay.xixi原創
2020-06-24 14:07:599842瀏覽

C語言中for用法是什麼?

C語言中for用法是:

#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 (循环变量赋初值; 循环条件; 循环变量增值)
{
    语句;
}

下面寫一個程序,求 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视频教程

以上是C語言中for用法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn