最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言簡明分析選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的使用

 更新時間:2022年04月21日 14:36:07   作者:清風(fēng)自在 流水潺潺  
C語言條件控制語句選擇結(jié)構(gòu),是屬于計算機的語言編輯,有在C語言條件控制中的語句選擇結(jié)構(gòu)的存在,即是C語言條件控制語句選擇結(jié)構(gòu),循環(huán)控制語句是一個基于C語言的編程語句,該語句主要有while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句來實現(xiàn)循環(huán)結(jié)構(gòu)

一、程序中的選擇結(jié)構(gòu)(if)

if的用法

上代碼:

#include <stdio.h>
int main()
{
    short a = 1;
    short b = 2;
    int c = a - b;
    if( c > 0 )
    {
        printf("a > b\n");
    }
    else
    {
        printf("a <= b\n");
    }
    return 0;
}

下面為輸出結(jié)果:

if ... else ...剪裁與組合

裁剪

  • if 可以不帶 else 分支,條件為真時,則執(zhí)行對應(yīng)的語句
  • if 和 else 都可以不使用 { } ,此時每個分支只對應(yīng)一條語句

組合

  • else 后的語句可以是另一個 if ...else ...
  • 多個 if ...else ...組合在一起可描述多路選擇分支

上代碼:

#include <stdio.h>
int main()
{
    short a = 2;
    short b = 2;
    int c = a - b;
    if( c > 0 )
        printf("a > b\n");
    else if( c == 0 )
        printf("a == b\n");
    else
        printf("a < b\n");
    return 0;
}

下面為輸出結(jié)果:

小結(jié)

  • 分支結(jié)構(gòu)是程序設(shè)計語言中的重要結(jié)構(gòu)
  • C語言中通過 if ...else ...對代碼進(jìn)行分支執(zhí)行
  • 可以對 if ... else ...進(jìn)行剪裁和組合,描述更多的執(zhí)行分支
  • if 分支可以獨立存在,else 分支不能獨立存在,必須跟在 if 之后
  • else 和最近的 if 匹配(就近原則)

二、switch多分支選擇語句

switch-更簡潔的多分支選擇結(jié)構(gòu)

上代碼:

#include <stdio.h>
int main()
{
    int a = 1;
    int b = 2;
    char sign = 0;
    printf("Input a sign: ");
    scanf("%c", &sign);
    switch(sign)
    {
        case '+':
            printf("%d + %d = %d\n", a, b, a + b);
            break;
        case '-':
            printf("%d - %d = %d\n", a, b, a - b);
            break;
        case '*':
            printf("%d * %d = %d\n", a, b, a * b);
            break;
        default:
            printf("Unsupported Sign: %c\n", sign);
    }
    return 0;
}

下面為輸出結(jié)果:

switch 實驗小結(jié)

  • switch 僅能適用于離散變量或值(整數(shù)值)
  • case 是分支入口,匹配成功后執(zhí)行 case 下的語句
  • 當(dāng)語句全部執(zhí)行后,需要使用 break 跳出執(zhí)行分支
  • default 分支不是必須的(類似于 else 分支不是必須的)

switch 語句的分支合并技巧

上代碼:

#include <stdio.h>
int main()
{
    int num = 0;
    printf("Input a number: ");
    scanf("%d", &num);
    switch( num )
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("%c\n", 'A' + (num - 1));
            break;
        default:
            printf("Invalid Input\n");
    }
    return 0;
}

下面為輸出結(jié)果:

小結(jié)

  • switch 是一種更簡潔的分支選擇結(jié)構(gòu)
  • switch 僅能適用于整數(shù)(小數(shù)不可用)
  • case 是分支入口,匹配成功后執(zhí)行case下的語句
  • 當(dāng)語句全部執(zhí)行后,需要使用 break 跳出執(zhí)行分支
  • 多個 case 可合并在一起,執(zhí)行相同的語句

三、while循環(huán)結(jié)構(gòu)

while - 循環(huán)結(jié)構(gòu)的直接支持

 

上代碼:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    while( i <= 100 )
    {
        sum = sum + i;
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    printf("i = %d\n", i);
    return 0;
}

下面為輸出結(jié)果:

進(jìn)階while循環(huán)

  • 循環(huán)體可能一次也不執(zhí)行(如: while( 0 ) )
  • 循環(huán)條件必須被改變,否則循環(huán)永遠(yuǎn)不會結(jié)束(如:while( 1 ) )
  • if 語句(不帶 else )可以看作特殊的循環(huán)(最多執(zhí)行1次循環(huán)體)
  • if 語句與 while 語句可相互組合嵌套實現(xiàn)復(fù)雜功能

上代碼:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    while( i <= 1000 )
    {
        if( (i % 3) == 0 )
        {
            sum = sum + i;
            printf("i = %d\n", i);
        }
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    return 0;
}

下面為部分輸出結(jié)果:

小結(jié)

  • 循環(huán)結(jié)構(gòu)是程序設(shè)計語言中的重要結(jié)構(gòu)
  • C語言中通過while 對代碼進(jìn)行循環(huán)執(zhí)行
  • 可以對if while進(jìn)行剪裁和組合,實現(xiàn)更復(fù)雜的功能
  • 循環(huán)體中需要有代碼改變循環(huán)條件,否則循環(huán)不會結(jié)束
  • while語句之間可以相互嵌套,構(gòu)成多重循環(huán)
  • while語句和if語句之間也可以相互嵌套

if 語句可以看作只循環(huán)一次的 while 語句

while語句可以看作擴展的 if 語句

while(...)
    if(...)
        while(...)
        {
        }

四、do...while 與 for

do...while 循環(huán)結(jié)構(gòu)

do...while 的構(gòu)成與執(zhí)行

  • do 是循環(huán)的開始,while 是循環(huán)的結(jié)束
  • do..while 可以看做一條語句,需要以分號結(jié)束
  • do...while 是否繼續(xù)循環(huán)依賴于括號中的循環(huán)條件
  • do...while 至少執(zhí)行一次循環(huán)體

上代碼:

#include <stdio.h>
int main()
{
    int sum = 0;
    int input = 0;
    int i = 0;
    while( i > 100 )
        printf("while( i > 0 )\n");
    do
        printf("do...while( i > 0 )\n");
    while( i > 100 );
    do
    {
        printf("Input: ");
        scanf("%d", &input);
        sum = sum + input;
    } while( sum < 100 );
    printf("sum = %d\n", sum);
    return 0;
}

下面為輸出結(jié)果:

這里注意一個問題:while 和 do...while 的區(qū)別,可以看到 i 為 0 時,while 循環(huán)里面的不會執(zhí)行,而 do...while 會執(zhí)行一次。

循環(huán)結(jié)構(gòu)的套路

  • 初始化循環(huán)變量
  • 在循環(huán)體中改變循環(huán)變量
  • 判斷循環(huán)條件是否為真

真:執(zhí)行循環(huán)體

假:結(jié)束循環(huán)

for循環(huán)結(jié)構(gòu)(更簡潔的循環(huán)結(jié)構(gòu))

for ( 0.初始化循環(huán)變量; 1.循環(huán)條件; 3.改變循環(huán)變量 )

{

2.循環(huán)體;

}

可以用下面的圖表示:

上代碼:

#include <stdio.h>
int main()
{
    int esum = 0;
    int osum = 0;
    int i = 0;
    for(i=1; i<=100; i=i+2)
    {
        osum = osum + i;
        esum = esum + (i + 1);
    }
    printf("osum = %d\n", osum);
    printf("esum = %d\n", esum);
    return 0;
}

下面為輸出結(jié)果:

for循環(huán)注意事項

  • for循環(huán)的各個部分(0,1,2,3)都是可選的
  • 花括號可省略,省略花括號則循環(huán)體僅為一條語句
  • for( ...; ...; ... )其中的分號不可省略

for ( 0.初始化循環(huán)變量; 1.循環(huán)條件; 3.改變循環(huán)變量 )

{

2.循環(huán)體;

}

上代碼:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    for(; i <= 100; )
    {
        sum = sum + i;
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    return 0;
}

下面為輸出結(jié)果:

小結(jié)

  • do...while是至少執(zhí)行一次循環(huán)體的循環(huán)結(jié)構(gòu)
  • do...while 先執(zhí)行循環(huán)體再判斷循環(huán)條件
  • for是 while的進(jìn)化,在寫法上更加精簡
  • for 與 while 相同,先判斷循環(huán)條件再執(zhí)行循環(huán)體

五、break和continue

再論break

  • break 能夠強制結(jié)束當(dāng)前結(jié)構(gòu),阻止程序向下執(zhí)行
  • switch分支選擇結(jié)構(gòu), break立即結(jié)束switch
  • 循環(huán)結(jié)構(gòu),break立即結(jié)束循環(huán)(忽略循環(huán)條件的真假)

上代碼:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    while( 1 )
    {
        sum = sum + i;
        if( i == 100 )
            break;
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    printf("i = %d\n", i);
    return 0;
}

下面為輸出結(jié)果:

再上一段代碼:

#include <stdio.h>
int main()
{
    int target = 30;
    int input = 0;
    for(;;)
    {
        printf("Input: ");
        scanf("%d", &input);
        if( input == target )
            break;
        else if( input < target )
            printf("It's small!\n");
        else if( input > target )
            printf("It's big!\n");
    }
    printf("Target = %d\n", input);
    return 0;
}

下面為輸出結(jié)果:

break遵循最近匹配原則

  • break 總是與離它最近的對應(yīng)關(guān)鍵字匹配
  • 關(guān)鍵詞指的是在C語言中有特殊含義的單詞,如:while,for,switch等。
  • 注:C語言中的變量名不能是關(guān)鍵字

上代碼:

#include <stdio.h>
int main()
{
    int i = 0;
    for(i=1; i<=10; i=i+1)
    {
        switch( i % 2 )
        {
        case 0:
            printf("%d is even number!\n", i);
            break;
        case 1:
            printf("%d is odd number!\n", i);
            break;
        }
    }
    return 0;
}

下面為輸出結(jié)果:

可以看到,break 對應(yīng)的是 switch ,而不是 for,這就是 break 的最近匹配原則。

再上一段代碼:

#include <stdio.h>
int main()
{
    int k = 0;
    int input = 0;
    printf("Input: ");
    scanf("%d", &input);
    switch( input % 2 )
    {
        case 0:
            printf("case 0\n");
            for(k=0; k<=2; k=k+1)
                if( k )
                    break;
        break;
        case 1:
            printf("case 1\n");
        break;
    }
    return 0;
}

下面為輸出結(jié)果:

如果把case 0 下面的 break 去掉一個,那么輸出結(jié)果就會變成下面這樣:

這還是因為 break 的最近匹配原則,去掉一個 break 后,break匹配的就是 for 了,所以也會輸出第二個 case 后面的內(nèi)容。

continue一循環(huán)體終結(jié)者

  • continue 是C語言中的關(guān)鍵字之一
  • continue 立即結(jié)束當(dāng)前循環(huán)體,直接進(jìn)入下一輪條件判斷
  • continue 與 break 不同,并不會結(jié)束整個循環(huán)

上代碼,打印1000以內(nèi)能被7整除的整數(shù),并統(tǒng)計數(shù)量:

#include <stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    for(i=1; i<1000; i=i+1)
    {
        if( i % 7 )
            continue;
        printf("%d ", i);
        n = n + 1;
    }
    printf("\n");
    printf("Count: %d\n", n);
    return 0;
}

下面為輸出結(jié)果:

小結(jié)

  • break 忽略循環(huán)條件的真假,立即結(jié)束循環(huán)
  • break 總是與離它最近的對應(yīng)關(guān)鍵字匹配
  • continue 結(jié)束當(dāng)前循環(huán)體,直接進(jìn)入下一輪條件判斷
  • continue 結(jié)束循環(huán)體的單次執(zhí)行,并不會結(jié)束整個循環(huán)

到此這篇關(guān)于C語言簡明分析選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的使用的文章就介紹到這了,更多相關(guān)C語言選擇與循環(huán)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++定義和初始化string對象實例詳解

    C++定義和初始化string對象實例詳解

    這篇文章主要為大家介紹了C++定義和初始化string對象實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++特性之智能指針shared_ptr詳解

    C++特性之智能指針shared_ptr詳解

    shared_ptr是C++11提供的一種智能指針類,它足夠智能,可以在任何地方都不使用時自動刪除相關(guān)指針,從而幫助徹底消除內(nèi)存泄漏和懸空指針的問題。本文主要是來和大家聊聊shared_ptr的使用,需要的可以參考一下
    2022-12-12
  • rapidjson解析json代碼實例以及常見的json core dump問題

    rapidjson解析json代碼實例以及常見的json core dump問題

    今天小編就為大家分享一篇關(guān)于rapidjson解析json代碼實例以及常見的json core dump問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 詳細(xì)對比C語言中的chmod()函數(shù)和fchmod()函數(shù)

    詳細(xì)對比C語言中的chmod()函數(shù)和fchmod()函數(shù)

    這篇文章主要介紹了C語言中的chmod()函數(shù)和fchmod()函數(shù)的詳細(xì)對比,兩個都是用于修改文件權(quán)限但是請注意實際使用上的差異,需要的朋友可以參考下
    2015-09-09
  • C語言菜鳥基礎(chǔ)教程之常量和變量

    C語言菜鳥基礎(chǔ)教程之常量和變量

    在C語言中,常量和變量都是可以用來存儲和表示數(shù)據(jù)的,常量值在程序執(zhí)行的過程中是不可變的,而變量是可變的
    2017-10-10
  • C++ 單例模式的幾種實現(xiàn)方式研究

    C++ 單例模式的幾種實現(xiàn)方式研究

    單例模式,可以說設(shè)計模式中最常應(yīng)用的一種模式了,據(jù)說也是面試官最喜歡的題目。但是如果沒有學(xué)過設(shè)計模式的人,可能不會想到要去應(yīng)用單例模式,面對單例模式適用的情況
    2019-01-01
  • C++?通過pqxxlib庫鏈接?PostgreSql數(shù)據(jù)庫的詳細(xì)過程

    C++?通過pqxxlib庫鏈接?PostgreSql數(shù)據(jù)庫的詳細(xì)過程

    這篇文章主要介紹了C++?通過pqxxlib庫鏈接?PostgreSql數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • C++類型轉(zhuǎn)換運算符的實例詳解

    C++類型轉(zhuǎn)換運算符的實例詳解

    這篇文章主要介紹了C++類型轉(zhuǎn)換運算符的實例詳解的相關(guān)資料,希望通過本文大家能夠掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • C++生成key-value鍵值的三種方式總結(jié)

    C++生成key-value鍵值的三種方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C++中生成key-value鍵值的三種方式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下
    2023-09-09
  • C語言實現(xiàn)簡易三子棋

    C語言實現(xiàn)簡易三子棋

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡易三子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

凌源市| 城市| 习水县| 会理县| 南投县| 邹平县| 布尔津县| 兴化市| 广东省| 岳阳市| 嘉祥县| 镇坪县| 阿尔山市| 义乌市| 金华市| 赞皇县| 杭锦后旗| 濮阳县| 宜兴市| 黄浦区| 文化| 丁青县| 富民县| 东安县| 清河县| 通海县| 滁州市| 长武县| 湘阴县| 满城县| 茶陵县| 寻乌县| 那曲县| 阳东县| 阜南县| 瑞丽市| 浦东新区| 河池市| 民丰县| 漳州市| 留坝县|