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

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

 更新時(shí)間:2022年04月21日 14:36:07   作者:清風(fēng)自在 流水潺潺  
C語言條件控制語句選擇結(jié)構(gòu),是屬于計(jì)算機(jī)的語言編輯,有在C語言條件控制中的語句選擇結(jié)構(gòu)的存在,即是C語言條件控制語句選擇結(jié)構(gòu),循環(huán)控制語句是一個(gè)基于C語言的編程語句,該語句主要有while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句來實(shí)現(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 分支,條件為真時(shí),則執(zhí)行對(duì)應(yīng)的語句
  • if 和 else 都可以不使用 { } ,此時(shí)每個(gè)分支只對(duì)應(yīng)一條語句

組合

  • else 后的語句可以是另一個(gè) if ...else ...
  • 多個(gè) 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è)計(jì)語言中的重要結(jié)構(gòu)
  • C語言中通過 if ...else ...對(duì)代碼進(jìn)行分支執(zhí)行
  • 可以對(duì) if ... else ...進(jìn)行剪裁和組合,描述更多的執(zhí)行分支
  • if 分支可以獨(dú)立存在,else 分支不能獨(dú)立存在,必須跟在 if 之后
  • else 和最近的 if 匹配(就近原則)

二、switch多分支選擇語句

switch-更簡(jiǎn)潔的多分支選擇結(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 實(shí)驗(yàn)小結(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ǎn)潔的分支選擇結(jié)構(gòu)
  • switch 僅能適用于整數(shù)(小數(shù)不可用)
  • case 是分支入口,匹配成功后執(zhí)行case下的語句
  • 當(dāng)語句全部執(zhí)行后,需要使用 break 跳出執(zhí)行分支
  • 多個(gè) 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)不會(huì)結(jié)束(如:while( 1 ) )
  • if 語句(不帶 else )可以看作特殊的循環(huán)(最多執(zhí)行1次循環(huán)體)
  • if 語句與 while 語句可相互組合嵌套實(shí)現(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è)計(jì)語言中的重要結(jié)構(gòu)
  • C語言中通過while 對(duì)代碼進(jìn)行循環(huán)執(zhí)行
  • 可以對(duì)if while進(jìn)行剪裁和組合,實(shí)現(xiàn)更復(fù)雜的功能
  • 循環(huán)體中需要有代碼改變循環(huán)條件,否則循環(huán)不會(huì)結(jié)束
  • while語句之間可以相互嵌套,構(gòu)成多重循環(huán)
  • while語句和if語句之間也可以相互嵌套

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

while語句可以看作擴(kuò)展的 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 可以看做一條語句,需要以分號(hào)結(jié)束
  • do...while 是否繼續(xù)循環(huán)依賴于括號(hào)中的循環(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é)果:

這里注意一個(gè)問題:while 和 do...while 的區(qū)別,可以看到 i 為 0 時(shí),while 循環(huán)里面的不會(huì)執(zhí)行,而 do...while 會(huì)執(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)(更簡(jiǎn)潔的循環(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)注意事項(xiàng)

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

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)化,在寫法上更加精簡(jiǎn)
  • for 與 while 相同,先判斷循環(huán)條件再執(zhí)行循環(huán)體

五、break和continue

再論break

  • break 能夠強(qiáng)制結(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 總是與離它最近的對(duì)應(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 對(duì)應(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 去掉一個(gè),那么輸出結(jié)果就會(huì)變成下面這樣:

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

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

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

上代碼,打印1000以內(nèi)能被7整除的整數(shù),并統(tǒng)計(jì)數(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 總是與離它最近的對(duì)應(yīng)關(guān)鍵字匹配
  • continue 結(jié)束當(dāng)前循環(huán)體,直接進(jìn)入下一輪條件判斷
  • continue 結(jié)束循環(huán)體的單次執(zhí)行,并不會(huì)結(jié)束整個(gè)循環(huán)

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

相關(guān)文章

  • C++定義和初始化string對(duì)象實(shí)例詳解

    C++定義和初始化string對(duì)象實(shí)例詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    C語言實(shí)現(xiàn)簡(jiǎn)易三子棋

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

最新評(píng)論

那曲县| 梁山县| 益阳市| 剑河县| 浮山县| 布尔津县| 崇仁县| 定陶县| 衡东县| 浪卡子县| 桐城市| 怀仁县| 浦城县| 泰安市| 信丰县| 论坛| 镇沅| 泰和县| 广西| 开鲁县| 常德市| 鄂托克前旗| 萨嘎县| 长治市| 阿拉善右旗| 阜新| 宁强县| 上饶县| 阳城县| 昔阳县| 青浦区| 鄯善县| 泸西县| 抚松县| 连江县| 安图县| 佛山市| 湘潭县| 牡丹江市| 东莞市| 中宁县|