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

C語言深入講解語句與選擇結(jié)構(gòu)的使用

 更新時(shí)間:2022年05月12日 16:45:47   作者:kikokingzz  
這篇文章主要為大家介紹了C語言的語句與選擇結(jié)構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

知識(shí)點(diǎn)1-語句

1.1 語句

1.表達(dá)式語句

由一個(gè)表達(dá)式加分號(hào)構(gòu)成一個(gè)表達(dá)式語句,其一般形式如下:

表達(dá)式 ;

Q1:什么是表達(dá)式?

A1:表達(dá)式就是C語言中由運(yùn)算符和數(shù)據(jù)構(gòu)成的式子;表達(dá)式運(yùn)算的結(jié)果稱為表達(dá)式的值,以下都是一些常見的表達(dá)式。

//表達(dá)式
1
-5
4+20
x = q++ % 3 
a*(b + c/d)/20 
q > 3

kiko:因此表達(dá)式語句就是在上面這些表達(dá)式后面加一個(gè)分號(hào)就完事了~

//表達(dá)式語句
1;
-5;
4+20;
x = q++ % 3 ;
a*(b + c/d)/20 ;
q > 3;

2.控制語句

由名字可見,控制語句用于控制程序的執(zhí)行過程,它是由特定的語句定義的,我個(gè)人將C語言中的控制語句分為以下3類:

  • 選擇語句:if-else語句、switch-case語句。
  • 循環(huán)語句:while語句、do-while語句、break語句。
  • 跳轉(zhuǎn)語句:break語句、goto語句、continue語句。

本期我們就講三類語句中的第一類,也就是選擇語句!

3.空語句

空語句是只有一個(gè)分號(hào)的語句,它在程序中什么也不做,可能就是起到一個(gè)占位作用。

; //空語句
for( int i=0; i<10; i++ )
; //循環(huán)體為空

4.復(fù)合語句

可以用花括號(hào){ }將一系列語句括起來,使其大功能上相當(dāng)于一條語句,這就是語句塊。語句塊中可以有變量聲明,聲明必須位于塊的開始。

int x;
int y;
x = 6;
{   int z = 100;
    y = z/x;
    printf("%d \n", y);  
}   //從大功能上看,{}里面的三條語句相當(dāng)于一條語句

知識(shí)點(diǎn)2-選擇結(jié)構(gòu)

2.1 if語句

Q1:什么是if語句?

A1:if語句提供一種二分支選擇的控制流程,它根據(jù)表達(dá)式的值來決定執(zhí)行兩個(gè)不同情況下的其中一個(gè)分支程序段。

1.if語句的單分支

單分支就是只有一個(gè)分支,當(dāng)給定的條件滿足時(shí),執(zhí)行一個(gè)語句1;當(dāng)條件不滿足時(shí),不進(jìn)行任何操作,因此只有語句1一種輸出,因此我稱之為單分支。

if(表達(dá)式)
語句1;//如果為真,執(zhí)行語句;否則不執(zhí)行
//C語言規(guī)定:0為假,非0為真

案例1:如果小于18歲,輸出未成年。

//該情況只有一個(gè)分支,即只有小于18這種情況輸出。
#include<stdio.h>
int main()
{
    int age=10;
    if(age<18)
     printf("未成年\n");
     return 0;
}

2.if語句的雙分支

雙分支就是有兩個(gè)分支,當(dāng)給定的條件滿足時(shí),執(zhí)行語句1;當(dāng)條件不滿足時(shí),執(zhí)行語句2。因此有2種不同的輸出,稱之為雙分支。

if(表達(dá)式)
語句1;//表達(dá)式為真,執(zhí)行語句1
else
語句2;//否則,執(zhí)行語句2

案例2:小于18打印未成年;否則打印成年。

//該情況只有兩個(gè)分支,即只有未成年、成年兩種不同的輸出結(jié)果
#include<stdio.h>
int main()
{
    int age=20;
    if(age<18)//年齡小于18時(shí)打印未成年
     printf("未成年\n");
     else//否則打印成年
     printf("成年\n");
     return 0;
}//由于我們將age初始化為20,因此最終會(huì)選擇打印“成年”

3.if語句的多分支

多分支就是有多個(gè)分支,這邊使用else if來使得if語句也可以進(jìn)行多個(gè)分支的判斷,我們?cè)诔绦蛑兄灰ㄟ^增加else if,就可以增加if語句判斷的分支數(shù)。

如下例中,當(dāng)表達(dá)式1滿足執(zhí)行語句1;如果不滿足表達(dá)式1,滿足表達(dá)式2,執(zhí)行語句2;其余情況執(zhí)行語句3,有3種不同的分支,因此我們稱之為多分支。

if(表達(dá)式1)//表達(dá)式1為真,執(zhí)行語句1
語句1;
else if(表達(dá)式2)//表達(dá)式1為假,表達(dá)式2為真,執(zhí)行語句2
語句2;
else//其余所有情況,執(zhí)行語句3
語句3;

案例3:輸入年齡后,判斷一個(gè)人的年齡范圍并輸出其結(jié)果(共有5種可能:未成年、青年、壯年、老年、老不死)

//有5種不同的輸出,因此判斷為多分支,需要結(jié)合else if
#include<stdio.h>
int main()
{
    int age=0;
    scanf("%d",&age);
    if(age<18)
     printf("未成年\n");
     else if (18<=age && age<28)
     printf("青年\n");
     else if(age>=50 && age<50)
     printf("壯年\n");
     else if(age>=50 && age<90)
     printf("老年\n");
     else//最后一個(gè)else也可以省略
     printf("老不死");
     return 0;
}

4.if語句與代碼塊

如果條件成立,要執(zhí)行多條語句,應(yīng)該使用代碼塊{ }。

#include <stdio.h>
int main()
{
    if(表達(dá)式)
   {
        語句列表1;//包含多條語句
   }
    else
   {
        語句列表2;//包含多條語句
   }
    return 0; 
}

案例4:輸入年齡后,判斷一個(gè)人的年齡范圍并輸出其結(jié)果(共有5種可能:未成年、青年、壯年、老年、老不死)

#include<stdio.h>
int main()
{
    int age=10;
    if(age<18)                //情況A(包含多條代碼,使用代碼塊)
     {
     printf("未成年\n");
     printf("不能談戀愛\n");
     }//一對(duì)大括號(hào),就是一個(gè)代碼塊
     else                     //情況B(包含多條代碼,使用代碼塊)
     {
     if (18<=age && age<28)
     printf("青年\n");
     else if(age>=50 && age<50)
     printf("壯年\n");
     else if(age>=50 && age<90)
     printf("老年\n");
     else//最后一個(gè)else也可以省略
     printf("老頑童");          
     }
    return 0;   
}

5.懸空else

Q1:什么是懸空else?

A1:else是和它離的最近的if匹配的,我們可以看一看下面這道例題來深入了解。

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

從程序的書寫形式上來看,if (a==1)else printf("haha\n"); 是匹配的,按這個(gè)邏輯,因?yàn)閍=0不滿足第一個(gè)if條件,因此會(huì)直接進(jìn)入else printf("haha\n");,本題最終應(yīng)當(dāng)輸出haha,可真的如此嗎?

結(jié)果居然是什么都沒有輸出。這是因?yàn)閑lse是和離它最近if相匹配的,也就是與if(b==1)相匹配,因此上圖橙色方框圈起來的這幾行代碼都屬于if (a==1) 條件滿足的情況,而本題a初始化為0,不滿足a==1,因此就不會(huì)有任何輸出。

2.2switch語句

1.switch語句的定義

Q1:什么是switch語句?

A1:switch語句是一種專門進(jìn)行多分支選擇的分支控制語句。上面介紹了if語句使用else if可以實(shí)現(xiàn)多分支,但是具體實(shí)現(xiàn)起來程序冗長且難以理解,而采用switch語句實(shí)現(xiàn)分支則結(jié)構(gòu)更清晰。switch語句的一般語法結(jié)構(gòu)如下:

switch(表達(dá)式)
{
case 常量表達(dá)式1:語句1;(break;)
case 常量表達(dá)式2:語句2;(break;)
···
case 常量表達(dá)式n:語句n;(break;)
default:語句n+1;
}

switch語句的執(zhí)行過程:

  • 計(jì)算switch表達(dá)式的值。
  • 將該值與case后面的常量表達(dá)式的值相比較,當(dāng)switch表達(dá)式的值與某個(gè)常量表達(dá)式i的值一致時(shí),就從該case后的語句i開始執(zhí)行,直到遇到break語句或整個(gè)switch結(jié)束。
  • 若switch表達(dá)式與任何常量表達(dá)式的值均不同時(shí),則執(zhí)行default后面的語句或執(zhí)行switch結(jié)構(gòu)的后續(xù)語句。

上述switch結(jié)構(gòu)的幾點(diǎn)注意:

(1)switch 后面的圓括號(hào)內(nèi)的表達(dá)式類型一般為整型、字符型和枚舉型,不能為浮點(diǎn)型。

(2)case標(biāo)簽: case后必須跟整數(shù)類型(包括char類型)的常量或整型常量表達(dá)式。

Q2:case后為什么可以跟char類型?

A2:因?yàn)锳SCII字符在內(nèi)存中是以整型存儲(chǔ)的!

(3)break語句:它使程序控制跳出當(dāng)前循環(huán)或switch語句的剩余部分,它實(shí)際效果是把語句列表劃分為不同的分支部分。

(4)default子句:當(dāng) switch表達(dá)式的值并不匹配所有case標(biāo)簽的值時(shí),這個(gè)default 子句后面的語句就會(huì)執(zhí)行。所以,每個(gè)switch語句中只能出現(xiàn)一條default子句。

2.switch語句的實(shí)戰(zhàn)案例

案例1.0 選擇打印星期

//該程序在接收到整數(shù)1-7后,會(huì)打印相對(duì)應(yīng)星期,然后運(yùn)行到break,跳出switch語句
#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)//day必須定義為整型
    {
    case 1+0 :printf("星期1\n");break;//case1+0 √ case后跟整型常量就行
    case 2:printf("星期2\n");break;
    case 3:printf("星期3\n");break;
    case 4:printf("星期4\n");break;
    case 5:printf("星期5\n");break;
    case 6:printf("星期6\n");break;
    case 7:printf("星期7\n");break;
    }
    return 0;
}

案例1.1 改進(jìn)打印星期

題目變化:輸入1-5打印工作日;輸入6-7打印休息日.

巧妙利用case語句未遇到break程序會(huì)持續(xù)進(jìn)行,因此無論從case1進(jìn)入還是從case5進(jìn)入,最終都會(huì)在printf("工作日")下一行的break結(jié)束switch語句;case6&case7同理。

案例2.0:求求看最后m與n的值為多少?

#include<stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:m++;
    case 2:n++;
    case 3:
        switch (n)
        {
        case 1:n++;
        case 2:m++; n++; break;                        
        }
    case 4:m++;
    default:
        break;
    }
    printf("m=%d , n=%d \n", m, n);
    return 0;
}

這一題的細(xì)節(jié)主要在于理解switch的嵌套,我們一步一步分析:

  • 進(jìn)入case1,m++,m變?yōu)?。
  • 進(jìn)入case2,n++,n變?yōu)?。
  • 進(jìn)入case3,這里嵌套了一個(gè)子switch語句,由于此時(shí)n為2,因此進(jìn)入子case2,m++,n++,遇到break跳出子switch語句,此時(shí)m為4,n為3。
  • 進(jìn)入case4,m++,m變?yōu)?,由于沒有遇到break繼續(xù)向下執(zhí)行。
  • 遇到default中的break,結(jié)束switch語句,打印結(jié)果,此時(shí)m=5,n=3。

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

相關(guān)文章

  • OpenCV實(shí)現(xiàn)亂序碎片復(fù)原

    OpenCV實(shí)現(xiàn)亂序碎片復(fù)原

    這篇文章主要介紹了通過OpenCV 直方圖相似度對(duì)比,實(shí)現(xiàn)將4張打亂順序的碎片拼接復(fù)原并展示原圖。文中的示例代碼講解詳細(xì),需要的朋友可以學(xué)習(xí)一下
    2021-12-12
  • c語言?指針零基礎(chǔ)講解

    c語言?指針零基礎(chǔ)講解

    指針是指向另一個(gè)變量的變量。意思是一個(gè)指針保存的是另一個(gè)變量的內(nèi)存地址。換句話說,指針保存的并不是普通意義上的數(shù)值,而是另一個(gè)變量的地址值。一個(gè)指針保存了另一個(gè)變量的地址值,就說這個(gè)指針“指向”了那個(gè)變量
    2022-02-02
  • Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)通用數(shù)據(jù)庫清理

    Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)通用數(shù)據(jù)庫清理

    項(xiàng)目如果需要存儲(chǔ)很多日志記錄比如運(yùn)行日志,時(shí)間長了記錄數(shù)量非常多,數(shù)據(jù)庫體積不斷增大,對(duì)應(yīng)數(shù)據(jù)庫表的增刪改查的效率不斷降低,因此需要將早期的數(shù)據(jù)清理。本文將詳細(xì)介紹一下通用數(shù)據(jù)庫清理的實(shí)現(xiàn),需要的可以參考一下
    2022-02-02
  • C++?多態(tài)虛函數(shù)的底層原理深入理解

    C++?多態(tài)虛函數(shù)的底層原理深入理解

    這篇文章主要介紹了C++?多態(tài)虛函數(shù)的底層原理深入理解,多態(tài)是在不同繼承關(guān)系的類對(duì)象,去調(diào)用同一函數(shù),產(chǎn)生了不同的行為,通常是父類調(diào)用子類的重寫函數(shù),在C++中就是?父類指針指向子類對(duì)象,此時(shí)父類指針的向下引用就可以實(shí)現(xiàn)多態(tài)
    2022-08-08
  • ffmpeg?在?win平臺(tái)下的編譯以及集成

    ffmpeg?在?win平臺(tái)下的編譯以及集成

    這篇文章主要為大家介紹了ffmpeg?在?win平臺(tái)下的編譯以及集成詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2023-05-05
  • C語言如何改變字體顏色

    C語言如何改變字體顏色

    這篇文章主要介紹了C語言如何改變字體顏色,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動(dòng)效果

    wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C語言各種操作符透徹理解下篇

    C語言各種操作符透徹理解下篇

    C?語言提供了豐富的操作符,除了上篇中的算術(shù)操作符,移位操作符,位操作符,賦值操作符外,還有單目操作符、關(guān)系操作符、邏輯操作符、條件操作符等等,讓我們通讀本篇來詳細(xì)了解吧
    2022-02-02
  • C++ inline內(nèi)聯(lián)函數(shù)詳解

    C++ inline內(nèi)聯(lián)函數(shù)詳解

    這篇文章主要介紹了C++ inline內(nèi)聯(lián)函數(shù)詳解,有感興趣的同學(xué)可以借鑒參考下
    2021-02-02
  • VC++實(shí)現(xiàn)通過API來查看程序錯(cuò)誤信息的方法

    VC++實(shí)現(xiàn)通過API來查看程序錯(cuò)誤信息的方法

    這篇文章主要介紹了VC++實(shí)現(xiàn)通過API來查看程序錯(cuò)誤信息的方法,非常實(shí)用的功能,需要的朋友可以參考下
    2014-08-08

最新評(píng)論