日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語言 正文

一篇文章帶你了解C語言的選擇結(jié)構(gòu)_C 語言

作者:侯稼澍 ? 更新時(shí)間: 2022-03-30 編程語言

一、if-else語句

1.單選擇

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

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

當(dāng)程序運(yùn)行到if語句時(shí),會(huì)由表達(dá)式進(jìn)行判定,諾表達(dá)式的返回值為真,則進(jìn)入代碼塊執(zhí)行語句,為假便跳過代碼塊繼續(xù)執(zhí)行。(當(dāng)代碼塊語句僅有一句時(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.雙選擇

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

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

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

?

當(dāng)程序運(yùn)行到if語句時(shí),會(huì)由表達(dá)式進(jìn)行判定,表達(dá)式的返回值為真,則執(zhí)行語句1,為假便塊執(zhí)行語句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.多選擇

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

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

?

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

switch語句也是一種分支語句。 常常用于多分支的情況。else if?語句也能實(shí)現(xiàn)多分支情況,但在某些情況下使用else if來實(shí)現(xiàn),會(huì)使代碼過于復(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ì)太過復(fù)雜,而使用switch就會(huì)很多

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

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

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

單使用switch語句是無法實(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é)果如下:

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

#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;
}

?

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

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

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

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

當(dāng)?switch?表達(dá)式的值并不匹配所有?case?標(biāo)簽的值時(shí),這個(gè)?default?子句后面的語句就會(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;
}

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

總結(jié)

原文鏈接:https://blog.csdn.net/HJS020828/article/details/122512531

欄目分類
最近更新