溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

發(fā)布時(shí)間:2022-01-17 16:17:46 來(lái)源:億速云 閱讀:109 作者:柒染 欄目:開(kāi)發(fā)技術(shù)

怎么分析C語(yǔ)言的選擇結(jié)構(gòu),相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

    一、if-else語(yǔ)句

    1.單選擇

    單選擇通過(guò)if語(yǔ)句就可以實(shí)現(xiàn),if語(yǔ)句的語(yǔ)法及執(zhí)行流程如下:

    if(表達(dá)式)
    {
         代碼塊(表達(dá)式返回值為真時(shí)執(zhí)行)
    }

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

    當(dāng)程序運(yùn)行到if語(yǔ)句時(shí),會(huì)由表達(dá)式進(jìn)行判定,諾表達(dá)式的返回值為真,則進(jìn)入代碼塊執(zhí)行語(yǔ)句,為假便跳過(guò)代碼塊繼續(xù)執(zhí)行。(當(dāng)代碼塊語(yǔ)句僅有一句時(shí),可以省略大括號(hào)。)

    舉一個(gè)簡(jiǎn)單的例子

    例:判斷10是否為3的倍數(shù)

     int main()
    {
    	int i = 10;
    		if (i % 3 == 0) //表達(dá)式結(jié)果為假 
    			printf("是");//代碼塊內(nèi) 未執(zhí)行
    	return 0;
    }

     2.雙選擇

    雙選擇通過(guò)if-else語(yǔ)句實(shí)現(xiàn),if-else語(yǔ)句的語(yǔ)法及執(zhí)行流程如下:

    (else的匹配:else是和它相距的最近的if匹配的)

    if(表達(dá)式)
    {
       語(yǔ)句一(表達(dá)式返回值為真時(shí)執(zhí)行)
    }
    else
    {
       語(yǔ)句二(表達(dá)式返回值為假時(shí)執(zhí)行)
    }

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

    當(dāng)程序運(yùn)行到if語(yǔ)句時(shí),會(huì)由表達(dá)式進(jìn)行判定,表達(dá)式的返回值為真,則執(zhí)行語(yǔ)句1,為假便塊執(zhí)行語(yǔ)句2。

    舉一個(gè)簡(jiǎn)單的例子

    例:判斷學(xué)生分?jǐn)?shù)及格 

    #include<stdio.h>
    int main()
    {
    	int i = 0;
    	scanf("%d", &i);
    	if (i >= 60)
    		printf("及格");
    	else
    		printf("不及格");
    	return 0;
    }

    3.多選擇

    通過(guò)else if語(yǔ)句實(shí)現(xiàn)的多選擇,else if語(yǔ)句的語(yǔ)法及執(zhí)行流程如下:

    if(表達(dá)式1)
    {
       語(yǔ)句1 (表達(dá)式1返回值為真時(shí)執(zhí)行)
    }
    else if(表達(dá)式2)
    {
       語(yǔ)句2 (表達(dá)式返回值為真時(shí)執(zhí)行)
    }
    else if(表達(dá)式3)
    { 
        語(yǔ)句3(表達(dá)式返回值為真時(shí)執(zhí)行)
    }
    else 
    {
       代碼塊(以上表達(dá)式均為假時(shí)執(zhí)行)
    }

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

    當(dāng)程序運(yùn)行到if語(yǔ)句時(shí),會(huì)由表達(dá)式進(jìn)行判定,表達(dá)式1的返回值為真,則進(jìn)入if下的代碼塊執(zhí)行語(yǔ)句1,為假便進(jìn)入表達(dá)式2。當(dāng)然if-else可以實(shí)現(xiàn)的分支不止這四種,通過(guò)增加else if 語(yǔ)句的數(shù)量便可以實(shí)現(xiàn)更多的選擇。

    舉一個(gè)簡(jiǎn)單的例子

    例:年齡分段

    #include <stdio.h>
    int main()
    {
        int age = 0;
        scanf("%d", &age);
        if (age < 18)
        {
            printf("少年\n");
        }
        else if (age >= 18 && age < 30)
        {
            printf("青年\n");
        }
        else if (age >= 30 && age < 50)
        {
                printf("中年\n");
        }
        else if (age >= 50 && age < 80)
        {
            printf("老年\n");
        }
        else
        {
            printf("老壽星\n");
        }
        return 0;
    }

    二.switch語(yǔ)句

    switch語(yǔ)句也是一種分支語(yǔ)句。 常常用于多分支的情況。else if 語(yǔ)句也能實(shí)現(xiàn)多分支情況,但在某些情況下使用else if來(lái)實(shí)現(xiàn),會(huì)使代碼過(guò)于復(fù)雜。

    比如:

    輸入1,輸出星期一

    輸入2,輸出星期二

    輸入3,輸出星期三

    輸入4,輸出星期四

    輸入5,輸出星期五

    輸入6,輸出星期六

    輸入7,輸出星期日

    如果使用else if 

    #include<stdio.h>
    int main()
    {
    	int day = 0;
    	scanf("%d", &day);
    	if (1 == day)
    		printf("星期一");
    	else if (2 == day)
    		printf("星期二");
    	else if (3 == day)
    		printf("星期三");
    	else if (4 == day)
    		printf("星期四");
    	else if (5 == day)
    		printf("星期五");
    	else if (6 == day)
    		printf("星期六");
    	else
    		printf("星期日");
    	return 0;
    }

     那么這個(gè)代碼便會(huì)太過(guò)復(fù)雜,而使用switch就會(huì)很多

    switch語(yǔ)句的語(yǔ)法及執(zhí)行流程如下:

    switch(整型表達(dá)式)
    {
        //在一個(gè) switch 中可以有任意數(shù)量的 case 語(yǔ)句。
        case 整形常量表達(dá)式:
        語(yǔ)句;
    }

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

    case  是一個(gè)入口,按照輸入整型表達(dá)式的值進(jìn)入,后按照順序依次運(yùn)行。

    單使用switch語(yǔ)句是無(wú)法實(shí)現(xiàn)分支的,需要搭配break使用才能實(shí)現(xiàn)真正的分支。

    舉一個(gè)例子:

    #include <stdio.h>
    int main()
    {
        int day = 0;
        scanf("%d", &day);
        switch (day)
        {
        case 1:
            printf("星期一\n");
        case 2:
            printf("星期二\n");
        case 3:
            printf("星期三\n");
        case 4:
            printf("星期四\n");
        case 5:
            printf("星期五\n");
        case 6:
            printf("星期六\n");
        case 7:
            printf("星期天\n");
        }
        return 0;
    }

    輸入值分別為2 4時(shí),輸出結(jié)果如下:

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

     與想要實(shí)現(xiàn)的效果相差甚遠(yuǎn),而搭配break使用就能解決這個(gè)問(wèn)題。

    #include <stdio.h>
    int main()
    {
        int day = 0;
        scanf("%d", &day);
        switch (day)
        {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");
            break;
        }
        return 0;
    }

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

     break語(yǔ)句 的實(shí)際效果是把語(yǔ)句列表劃分為不同的分支部分。

     switch除了搭配break語(yǔ)句使用,往往也會(huì)搭配 default語(yǔ)句

    如果表達(dá)的值與所有的case標(biāo)簽的值都不匹配時(shí),所有的語(yǔ)句都會(huì)被跳過(guò)。程序并不會(huì)終止,也不會(huì)報(bào)錯(cuò),因?yàn)檫@種情況在C中并不認(rèn)為是個(gè)錯(cuò)誤。

    諾并不想忽略不匹配所有標(biāo)簽的表達(dá)式的值時(shí),可以在語(yǔ)句列表中增加一條default子句。

    當(dāng) switch 表達(dá)式的值并不匹配所有 case 標(biāo)簽的值時(shí),這個(gè) default 子句后面的語(yǔ)句就會(huì)執(zhí)行。

     例如:

    #include <stdio.h>
    int main()
    {
        int day = 0;
        scanf("%d", &day);
        switch (day)
        {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");
            break;
        default:
            printf("輸入錯(cuò)誤");
        }
        return 0;
    }

    怎么分析C語(yǔ)言的選擇結(jié)構(gòu)

     switch 語(yǔ)句可以有一個(gè)可選的 default case,出現(xiàn)在 switch 的結(jié)尾。default case 可用于在上面所有 case 都不為真時(shí)執(zhí)行一個(gè)任務(wù)。default case 中的 break 語(yǔ)句不是必需的。

    C語(yǔ)言是什么

    C語(yǔ)言是一門面向過(guò)程的、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā),使用C語(yǔ)言可以以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。

    看完上述內(nèi)容,你們掌握怎么分析C語(yǔ)言的選擇結(jié)構(gòu)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI