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

C語(yǔ)言分支和循環(huán)詳解

 更新時(shí)間:2021年10月19日 09:54:17   作者:lzhNox  
C語(yǔ)言是一門結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,當(dāng)C語(yǔ)言用來描述生活中的事物時(shí),會(huì)用到三種結(jié)構(gòu):順序結(jié)構(gòu)(不去贅述),選擇結(jié)構(gòu)(對(duì)應(yīng)分支語(yǔ)句),循環(huán)結(jié)構(gòu)(對(duì)應(yīng)循環(huán)語(yǔ)句),分支語(yǔ)句:分支語(yǔ)句分為兩種,一種是if語(yǔ)句,一種是switch語(yǔ)句

前言

在本章,我會(huì)詳述分支和循環(huán)語(yǔ)句的概念與使用規(guī)范

一、什么是語(yǔ)句

我們常在一條代碼的末尾加一個(gè)分號(hào) “;” ,C語(yǔ)言中分號(hào)前的就是一條語(yǔ)句,例如

int a = 0;//這是一條語(yǔ)句
printf("%d\n",a);這又是一條語(yǔ)句

很簡(jiǎn)單的概念。

那么,如果單放一個(gè)分號(hào),分號(hào)前什么也不寫,算不算一條語(yǔ)句呢?

答:當(dāng)然也算,這是需要注意的一個(gè)小點(diǎn)。

二、分支語(yǔ)句

分支語(yǔ)句又叫選擇結(jié)構(gòu),就比如你如果認(rèn)真學(xué)習(xí),你就能找到好工作;如果你整天打游戲,那就等于你選擇了畢業(yè)后失業(yè)。是好好學(xué)習(xí),還是打游戲,這就是你的選擇,你的選擇會(huì)帶來相應(yīng)的結(jié)果,這就是分支語(yǔ)句。

分支語(yǔ)句:

  • if
  • switch

1.if語(yǔ)句

if語(yǔ)句的結(jié)構(gòu):

if(條件)
    語(yǔ)句(帶來的結(jié)果);
else
    語(yǔ)句(帶來的結(jié)果);

如果滿足if括號(hào)里的條件,則實(shí)行if下面的語(yǔ)句,否則執(zhí)行else下面的語(yǔ)句。

上面是一種結(jié)構(gòu),還有一種叫多分支結(jié)構(gòu):

if(條件)
   (語(yǔ)句);
else if(條件)
   (語(yǔ)句);
else(條件)
   (語(yǔ)句);

其實(shí)就是在上一種結(jié)構(gòu)上,多了一個(gè)選擇else if。

接下來我舉一個(gè)完整的例子,以體重為例

#include <stdio.h>

int main()
{
 int weight = 0;
 scanf(“%d\n”,&weigth);
 if(weight<100)
    {
    printf("瘦子");
    }
 else if(weight>100 && weight<150)
    {
    printf("正常")
    }`在這里插入代碼片`
 else
    {
    printf("偏重")
    }
    return 0;
 }

這里就是讓你輸入體重

  • 如果滿足if(體重小于100),那么輸出:瘦子
  • 如果滿足else if()體重在100至150之間,那么輸出:正常

注意:當(dāng)我們想表達(dá)體重大于100,小于150,我們通常會(huì)寫(100<weight<150),但在C語(yǔ)言中,這是錯(cuò)誤的。正確書寫應(yīng)該為(weight>100 && weight<150)。

這個(gè)符號(hào)&&成為邏輯與運(yùn)算符,只有當(dāng)兩個(gè)式子都為真的時(shí)候,它才會(huì)表達(dá)為真,與高中我們學(xué)的“或且非”的原理一樣。

在我們這個(gè)例子就是,當(dāng)weight同時(shí)滿足小于150和大于100的時(shí)候,它才會(huì)判斷為真,然后輸出結(jié)果

  • 如果上面都不滿足,就輸出else的語(yǔ)句:偏重。

除此之外,還有個(gè)新手常犯的錯(cuò)誤,我們看以下代碼

#include <stdio.h>
int main()
{
    int a = 0;/第一行
    int b = 2;/第二行
    if(a == 1)/第三行
        if(b == 2)/第四行
            printf("好的\n");/第五行
    else/第六行
        printf("不好\n");/第七行
    return 0;

可見第三行 if 和第六行的 else 是對(duì)齊的,想當(dāng)然的以為這兩個(gè)是對(duì)應(yīng)的,如果是這兩個(gè)對(duì)應(yīng)的話,程序執(zhí)行的步驟應(yīng)該是

1. 令a = 0,b = 2

2. 到第三行,判斷a是否為2,判斷為否

3. 執(zhí)行else打印“不好”

但是當(dāng)我們執(zhí)行會(huì)發(fā)現(xiàn),它什么都沒打印。

因?yàn)?,else 和 if 對(duì)應(yīng)的原則是,就近原則,其實(shí)第六行和第四行它們是挨最近的,所以是這兩處的else和if對(duì)應(yīng)。 因此,程序執(zhí)行的步驟應(yīng)該是

1. 令a = 0,b = 2

2. 判斷a是否為1,判斷為否

3. 下一級(jí)的if else語(yǔ)句不執(zhí)行,直接return 0

所以我們平時(shí)為避免這類錯(cuò)誤,應(yīng)當(dāng)注意使用大括號(hào)“{ }”

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

這樣,它打印出來的就是“不好”。

2.switch語(yǔ)句

switch也是一直分支語(yǔ)句,常用于多分支,例如你輸入1,程序就輸出一月,你輸入2,程序就輸出二月,以此類推,用 if 語(yǔ)句寫比較麻煩,所以就誕生了switch語(yǔ)句。

switch語(yǔ)句:

switch(整型常量表達(dá)式)
{
   語(yǔ)句項(xiàng)
 }

語(yǔ)句項(xiàng)又是什么呢?

語(yǔ)句項(xiàng)是一些case語(yǔ)句,放在例子中為比較好理解

#include <stdio.h>
int main()
{
    int day = 1
	;
    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;
}

該程序執(zhí)行過程

1.int day = 1 這個(gè)值可以隨機(jī)

2.進(jìn)入switch語(yǔ)句

3.判斷day的值與哪個(gè)case相同

4.輸出該case下的語(yǔ)句

此外,該代碼中的break,為終止語(yǔ)句

何為終于語(yǔ)句?

答: 就是程序執(zhí)行到break,就終止了,很好理解。在switch語(yǔ)句中,實(shí)際上程序是判斷執(zhí)行哪個(gè)case,判斷到了,就直接跳到那個(gè)case那邊,之后接著執(zhí)行下面的代碼,是不會(huì)終止的。就等于十條斑馬線,你一跳,跳到了第三條,但之后你還要走完后面的七條。

所以break語(yǔ)句在這里的作用就是你跳到了第三條斑馬線,就讓你停下來,不讓你走了

還有一種情況:如果表達(dá)的值與所有case標(biāo)簽的值都不匹配怎么辦?

答:其實(shí)不匹配在C語(yǔ)言中也不會(huì)被報(bào)錯(cuò),只是什么都不輸出。

當(dāng) switch表達(dá)式的值并不匹配所有case標(biāo)簽的值時(shí),我們可以用default子句 來規(guī)定其輸出什么,其實(shí)和case語(yǔ)句類似

default:
{
}
             break;

三、循環(huán)語(yǔ)句

循環(huán)語(yǔ)句有以下幾種

  • while
  • for
  • do while

1.while循環(huán)

循環(huán),顧名思義就是程序去重復(fù)執(zhí)行一個(gè)指令,我們可以用此非常簡(jiǎn)短的寫出我們需要的東西。
我們發(fā)現(xiàn)生活中很多的實(shí)際的例子是:同一件事情我們需要完成很多次。
那我們?cè)趺醋瞿兀?C語(yǔ)言中給我們引入了:while語(yǔ)句,可以實(shí)現(xiàn)循環(huán)。

while的語(yǔ)法結(jié)構(gòu)

while(表達(dá)式)
循環(huán)語(yǔ)句;

當(dāng)我們一直循環(huán),直到滿足了表達(dá)式所規(guī)定的條件,程序才會(huì)跳出。

比如我們實(shí)現(xiàn)在屏幕上打印1-10的數(shù)字

#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)
 {
 printf("%d ", i);
 i = i+1;
 }
 return 0;
}

它運(yùn)行的步驟是

1.令i = 1

2.判斷 i 是否小于等于10

3.判斷為真,則進(jìn)入循環(huán)。

4.先打印 i 的數(shù)值

5.再i + 1

6.再判斷 i 是否小于等于10

7.以此類推

2.循環(huán)語(yǔ)句中的break與continue

break作用:

break在while語(yǔ)句中,起直接終止所有循環(huán)的作用。

continue作用:

continue在while語(yǔ)句中,起終止本次循環(huán)的作用,就是在本次循環(huán)中,碰到continue后面的語(yǔ)句就不執(zhí)行,直接跳到while判斷。

舉個(gè)例子能更好理解

#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)
 {
 if(i == 5)
 continue;
 printf("%d ", i);
 i = i+1;
 }
 return 0;
}

大家猜猜此時(shí)程序運(yùn)行之后 打印的值是多少?

答案是:1、2、3、4

該程序執(zhí)行步驟:

1.令 i = 1

2.判斷 i 是否小于等于10

3.判斷為真,進(jìn)入循環(huán)

4.在循環(huán)內(nèi)判斷 i 是否等于 5

5.不等于 則跳過 if 的語(yǔ)句項(xiàng)continue

6.打印 i 的值

7.i + 1

8.再次循環(huán)

9.當(dāng)循環(huán)到i 等于 5 的時(shí)候 進(jìn)入 if 語(yǔ)句

10.執(zhí)行continue 跳過本次循環(huán)(不執(zhí)行后面的打印和 i + 1)

11.直接判斷 i 是否小于等于 10 (此時(shí) i 還等于5)

12.再次進(jìn)入 if 重復(fù) 9、10、11的動(dòng)作

相信這樣大家能夠更加理解continue的作用。

3.for循環(huán)

為什么有了 while 循環(huán)還要多個(gè) for 循環(huán)呢?

首先我們看for循環(huán)的語(yǔ)法:

for(表達(dá)式1,表達(dá)式2,表達(dá)式3)
   循環(huán)語(yǔ)句:

表達(dá)式1

依舊舉個(gè)例子闡述:

(打印1-10的數(shù)字)

#include <stdio.h>
int main()
{
 int i = 0;
 //for(i=1/*初始化*/; i<=10/*判斷部分*/; i++/*調(diào)整部分*/)
 for(i=1; i<=10; i++)
 {
 printf("%d ", i);
 }
 return 0;
 }

這段代碼首先將 i 初始化為1,之后判斷 i 是否小于等于10,是則進(jìn)入循環(huán),執(zhí)行完整個(gè)代碼之后再i++(i自增1),再重復(fù)上述動(dòng)作直到 i 大于10停止循環(huán)。

那么可見for與while循環(huán)是類似的,但我們應(yīng)該在什么時(shí)候用for什么時(shí)候用while呢?

答:對(duì)一個(gè)數(shù)組進(jìn)行循環(huán)時(shí),如果每輪循環(huán)都是在循 環(huán)處理完后才將循環(huán)變量增加的話,使用for循環(huán)比較方便。
如果循環(huán)處理的過程中就要將循環(huán)變量增加時(shí),則使用while循環(huán)比較方便。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Visual Studio 2022卡死分析

    Visual Studio 2022卡死分析

    本文主要介紹了Visual Studio 2022卡死分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Qt實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲

    Qt實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語(yǔ)言讀取data.json文件并存入MySQL數(shù)據(jù)庫(kù)小案例(推薦)

    C語(yǔ)言讀取data.json文件并存入MySQL數(shù)據(jù)庫(kù)小案例(推薦)

    本文介紹如何使用C語(yǔ)言結(jié)合cJSON庫(kù)讀取JSON文件,并將數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中,示例代碼包括創(chuàng)建MySQL表的SQL語(yǔ)句和C語(yǔ)言代碼,以及如何編譯和運(yùn)行程序,確保已安裝必要的庫(kù)以支持程序運(yùn)行
    2024-10-10
  • C++多線程傳參的實(shí)現(xiàn)方法

    C++多線程傳參的實(shí)現(xiàn)方法

    本文主要介紹了C++多線程傳參的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法

    C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法,功能非常的實(shí)用,需要的朋友可以參考下
    2014-07-07
  • Qt控件之QPushButton使用及技巧

    Qt控件之QPushButton使用及技巧

    QPushButton類是Qt中用于創(chuàng)建按鈕的控件類,它繼承自QAbstractButton類,本文就來介紹一下Qt控件之QPushButton使用及技巧,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • C/C++整數(shù)乘積的溢出問題的解決

    C/C++整數(shù)乘積的溢出問題的解決

    整數(shù)乘積的溢出問題是指兩個(gè)整數(shù)相乘得到的結(jié)果超過了所能表示的數(shù)據(jù)類型的范圍,本文給大家介紹了C/C++整數(shù)乘積的溢出問題的解決,需要的朋友可以參考下
    2024-02-02
  • 簡(jiǎn)單比較C語(yǔ)言中的execl()函數(shù)與execlp()函數(shù)

    簡(jiǎn)單比較C語(yǔ)言中的execl()函數(shù)與execlp()函數(shù)

    這篇文章主要介紹了C語(yǔ)言中的execl()函數(shù)與execlp()函數(shù)的簡(jiǎn)單比較,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • c++中關(guān)于int、long、long?long等取值范圍

    c++中關(guān)于int、long、long?long等取值范圍

    這篇文章主要介紹了c++中關(guān)于int、long、long?long等取值范圍,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 探討C++中不能聲明為虛函數(shù)的有哪些函數(shù)

    探討C++中不能聲明為虛函數(shù)的有哪些函數(shù)

    下面小編就為大家?guī)硪黄接慍++中不能聲明為虛函數(shù)的有哪些函數(shù)。希望對(duì)大家有所幫助。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2017-01-01

最新評(píng)論

万盛区| 九龙县| 达日县| 清镇市| 池州市| 东乡县| 正安县| 琼中| 郯城县| 浦北县| 保山市| 忻州市| 葫芦岛市| 安仁县| 宜黄县| 安图县| 苍山县| 车致| 久治县| 彰化市| 六枝特区| 华宁县| 宁国市| 宕昌县| 上蔡县| 忻州市| 丘北县| 旺苍县| 来安县| 阿拉善左旗| 始兴县| 叶城县| 林甸县| 厦门市| 滨州市| 中宁县| 铜山县| 清丰县| 北流市| 青铜峡市| 龙游县|