C語言之流程控制

順序結構語句

程序中全部的語句都是從上到下逐條執行,這樣的程序結構叫作順序結構。順序結構式程序開發中最多見的一種結構,它能夠包含多種語句,如變量的定義語句、輸入輸出語句、賦值語句等。函數

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...

    
    printf("1");
    printf("2");
    printf("3");
    printf("4");
    printf("5");
    printf("6");
    printf("7");
    
    return 0;
}

以上輸出結果分別是:一、二、三、四、5從運行結果能夠看出,程序是按照語句的前後順序執行的所以能夠說明程序是一個順序結構的程序。spa

選擇結構語句

      if條件語句分爲三種語法格式,每一種格式都有其自身的特色,下面分別進行其講解。                    code

  •       if 語句是指若是知足條件,就進行相應的處理。以下:
  • #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        // insert code here...
        int i = 2;
        if(i > 0)
        {
            printf("i是一個大於0的變量");
        }
    }
  •       if.....else 語句是指知足某種,就進行相應的處理,不然就進行另一種處理。以下:
  • #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        // insert code here...
        int i = 2;
        if(i > 0)
        {
            printf("i是一個大於0的變量");
        }else{
            printf("i不是一個大於0的變量");
        }
    }
  •       if...else if....else   語句用於對多個條件進行判斷,從而進行多種不一樣的處理。以下:
#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    int i = 2;
    if(i < 0)
    {
        printf("你說男的");
    }else if(i == 0){
        printf("你是人妖");
    }else{
        printf("你是女的");
    }
}

三元運算符開發

      在c語言中有一種特殊的運算叫作三元運算,它和if....else 語句相似,具體語法格式以下:                it

      判斷條件?表達式1:表達式2            io

      三元運算一般用於對某個變量進行賦值,當判斷條件成立時,運算結果爲表達式1的值,不然結果爲表達式2的值。for循環

#include <stdio.h>

int main(int argc, const char * argv[]) {

    //求出x、y的最大值
    int x = 9;
    int y = 15;
    int max = 0;
    if (x > y) {
        max = x;
    }else{
        max = y;
    }
    //以上條件判斷能夠寫成以下
    max = x > y ? x : y;
}

 switch條件語句class

       switch  條件語句也是一種很經常使用的選擇語句,和if條件語句不一樣,它只能針對某個表達式的值做出判斷,從而決定程序執行哪一段代碼。以下:變量

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int week = 0;
    switch (week) {
        case 0:
            printf("星期日");
            break;
        case 1:
            printf("星期一");
            break;
        case 2:
            printf("星期二");
            break;
        case 3:
            printf("星期三");
            break;
        case 4:
            printf("星期四");
            break;
        case 5:
            printf("星期五");
            break;
        case 6:
            printf("星期六");
            break;
            
        default:
            break;
    }
}

注:break 是跳出循環語句,之後會講解到循環

循環結構語句

       一、while循環語句和switch條件判斷語句很相似,都是根據條件判斷來決定是否執行大括號內的執行語句。區別在於,while語句會反覆地進行條件判斷,只要條件成立,{}內的執行語句就會一直執行,直到條件不成立,while循環結束。while循環語句的具體語法格式以下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int x = 0;
    while (x <= 4) {
        printf("條件成立");   //打印x的值
        x++;
    }
}

在上面的語法格式中,{}中的執行語句被稱做循環體,循環體是否執行取決於循環條件。當循環條件爲true時,循環體就會被執行。循環體執行完畢時會繼續判斷循環條件,如條件仍爲true時,循環體就會被執行。循環體執行完畢時會繼續判斷循環條件,如條件仍爲true則會繼續執行,直到循環條件爲false時,整個循環過程纔會結束。

      二、do...while 循環語句和while循環語句功能相似,兩者的不一樣之處在於,while語句須要先判斷循環條件,而後根據判斷結果來決定是否執行大括號中的代碼,二do....while循環語句先要執行一次大括號內的代碼在判斷循環條件,其具體語法格式以下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int x = 0;
    do {
        printf("條件成立");   //條件成立
    } while (x <= 4);
}

do...while 和 while可以實現一樣的功能。然而在程序運行過程當中,這兩種語句仍是有差異的。若是循環條件在循環語句開始時就不成立,那麼while循環的循環體一次都不會執行,而do...while循環的循環體仍是會執行一次。

       三、for 循環語句

      在前面的小節中分別講解了while循環和do...whilef循環。在程序開發中,還常常會使用另外一種循環語句;,即for循環,它一般用於循環次數已知的狀況,其具體語法格式以下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int sum = 0;
    for (int i = 0; i < 100; i++) {
        sum += i;
    }
    printf("sum = %d \n", sum);
    return 0;
}

循環嵌套

有時爲了解決一個較爲複雜的問題,須要在一個循環中再定義一個循環,這樣的方式被稱做循環嵌套,在c語言中,while、do...while、for循環語句均可以進行嵌套,而且它們之間也能夠互相嵌套,而且它們之間也能夠互相嵌套,這當中最多見的就是在for循環中嵌套for循環,具體語法格式以下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    for (int row = 0; row < 7; row++) {
        for (int column = 0; column <= row; column++) {
            printf("*");   //打印*
        }
        printf("\n");   //打印換行
    }
    
    return 0;
}

打印的結果:
*
**
***
****
*****
******
*******
Program ended with exit code: 0

內循環根據column 的數量打印*的數量,內部循環結束後執行外部循環的換行操做。

跳轉語句(break、goto、continue)

      跳轉語句用於實現循環執行過程當中程序流程的跳轉,在C語言中,跳轉語句有break語句、goto語句和continue語句。接下來分別進行詳細的講解。

      一、break 語句

      在switch條件語句和循環語句中均可以使用break語句。當它出如今switch條件語句中時,做用是終止某個case並跳出switch結構;。當它出如今循環語句中,做用是跳出當前循環語句,以下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    for (int i = 0; i < 100; i++) {
        if (i == 6) {
            break;
        }
        printf("i = %d", i);
    }
    return 0;
}

運行結果打印的是i的值,但並無i = 6的結果,由於當i的值爲6時,執行if條件語句跳出了循環。也是就是終止循環了。

    二、goto 語句

    當break 語句出如今嵌套循環中的內層循環時它只能跳出內層循環,若是想要跳出外層循環則須要對外層循環添加標記,而後使用goto語句。以下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    for (int i = 0; i < 100; i++) {
        for (int j = 0; j <= i; j++) {
            if (i > 3) {
               goto end;
            }
            printf("x");
        }
        printf("\n");
    }
    end: return 0;
}

程序運行結果只打印了4行,由於當i爲4時執行if語句,goto跳轉到end:return 0;結束此主函數,即循環體也結束。

    三、continue語句

    在執行語句中,若是但願當即終止本次循環,並執行下一次循環,此時就須要使用continue語句。以下例子:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    //打印100內的奇數
    for (int i = 0; i < 100; i++) {
        if (i % 2 == 0) {
            continue;
        }
        printf("奇數:i = %d", i);
    }
}

當i對2求餘的值爲0時,結束本次循環執行下一次循環,則打印的就只有奇數了。

相關文章
相關標籤/搜索