欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

組合

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

二、switch多分支選擇語(yǔ)句

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 下的語(yǔ)句
  • 當(dāng)語(yǔ)句全部執(zhí)行后,需要使用 break 跳出執(zhí)行分支
  • default 分支不是必須的(類似于 else 分支不是必須的)

switch 語(yǔ)句的分支合并技巧

上代碼:

#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下的語(yǔ)句
  • 當(dāng)語(yǔ)句全部執(zhí)行后,需要使用 break 跳出執(zhí)行分支
  • 多個(gè) case 可合并在一起,執(zhí)行相同的語(yǔ)句

三、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 語(yǔ)句(不帶 else )可以看作特殊的循環(huán)(最多執(zhí)行1次循環(huán)體)
  • if 語(yǔ)句與 while 語(yǔ)句可相互組合嵌套實(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ì)語(yǔ)言中的重要結(jié)構(gòu)
  • C語(yǔ)言中通過(guò)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語(yǔ)句之間可以相互嵌套,構(gòu)成多重循環(huán)
  • while語(yǔ)句和if語(yǔ)句之間也可以相互嵌套

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

while語(yǔ)句可以看作擴(kuò)展的 if 語(yǔ)句

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

四、do...while 與 for

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

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

  • do 是循環(huán)的開(kāi)始,while 是循環(huán)的結(jié)束
  • do..while 可以看做一條語(yǔ)句,需要以分號(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è)問(wèn)題: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)體僅為一條語(yǔ)句
  • 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語(yǔ)言中有特殊含義的單詞,如:while,for,switch等。
  • 注:C語(yǔ)言中的變量名不能是關(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語(yǔ)言中的關(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語(yǔ)言簡(jiǎn)明分析選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的使用的文章就介紹到這了,更多相關(guān)C語(yǔ)言選擇與循環(huán)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • FFmpeg中avfilter模塊的介紹與使用

    FFmpeg中avfilter模塊的介紹與使用

    FFmpeg中的libavfilter模塊(或庫(kù))用于filter(過(guò)濾器),?filter可以有多個(gè)輸入和多個(gè)輸出,下面就跟隨小編一起簡(jiǎn)單學(xué)習(xí)一下它的巨日使用吧
    2023-08-08
  • 詳解C++賦值操作符重載

    詳解C++賦值操作符重載

    這篇文章主要介紹了C++賦值操作符重載的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • Windows的鉤子機(jī)制詳解

    Windows的鉤子機(jī)制詳解

    這篇文章主要介紹了Windows的鉤子機(jī)制,對(duì)于初學(xué)者進(jìn)一步了解windows程序設(shè)計(jì)中鉤子的原理及運(yùn)用有很大的幫助,需要的朋友可以參考下
    2014-07-07
  • VS2017開(kāi)發(fā)C語(yǔ)言出現(xiàn)“no_init_all“的解決辦法

    VS2017開(kāi)發(fā)C語(yǔ)言出現(xiàn)“no_init_all“的解決辦法

    這篇文章介紹了VS2017開(kāi)發(fā)C語(yǔ)言出現(xiàn)“no_init_all“的解決辦法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C語(yǔ)言中的getchar和putchar的使用方法

    C語(yǔ)言中的getchar和putchar的使用方法

    這篇文章主要介紹了C語(yǔ)言中的getchar和putchar的使用方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • C語(yǔ)言 用指針作為函數(shù)返回值詳解

    C語(yǔ)言 用指針作為函數(shù)返回值詳解

    本文主要介紹C語(yǔ)言 用指針作為函數(shù)返回值,這里整理了相關(guān)資料及示例代碼,幫助大家學(xué)習(xí)理解此部分知識(shí),有需要的同學(xué)可以參考下
    2016-08-08
  • c++ 類中const成員變量的賦值方法

    c++ 類中const成員變量的賦值方法

    下面小編就為大家?guī)?lái)一篇c++ 類中const成員變量的賦值方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++圖像加載之libpng、FreeImage、stb_image詳解

    C++圖像加載之libpng、FreeImage、stb_image詳解

    libpng、FreeImage、stb_image都是圖像解析的開(kāi)源庫(kù),這篇文章主要為大家詳細(xì)介紹了這三者的使用方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-06-06
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的相互實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的相互實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言相互實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中的棧與隊(duì)列,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-07-07
  • 一文弄懂C語(yǔ)言如何實(shí)現(xiàn)單鏈表

    一文弄懂C語(yǔ)言如何實(shí)現(xiàn)單鏈表

    單鏈表是由多個(gè)結(jié)點(diǎn)鏈接組成,它的每個(gè)結(jié)點(diǎn)包含兩個(gè)域,一個(gè)數(shù)據(jù)域和一個(gè)鏈接域(地址域),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何實(shí)現(xiàn)單鏈表的相關(guān)資料,需要的朋友可以參考下
    2021-09-09

最新評(píng)論