亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

3 C語言 流程控制 循環 跳轉

發布時間:2020-07-11 18:54:13 來源:網絡 閱讀:2127 作者:990487026 欄目:開發技術

3 C語言 流程控制 循環 跳轉

選擇: if switch

循環   while,do while ,for ,嵌套 

跳轉 break goto continue 



第3章流程控制

學習目標

u掌握選擇結構語句

u掌握循環結構語句

前面的章節一直在介紹C語言的基本語法知識,然而僅僅依靠這些語法知識還不能編寫出完整的程序。在程序中,通常需要加入業務邏輯,并對程序的流程進行控制。本章將重點講解C語言中最基本的三種流程控制語句。

3.1  程序的運行流程圖

流程圖是描述問題處理步驟的一種常用圖形工具,它是由一些圖框和流程線組成的。流程圖描述問題的處理步驟,形象直觀,便于閱讀。畫流程圖時必須按照功能選用相應的流程圖符號,常用的流程圖符號如圖3-1所示。


3 C語言 流程控制 循環 跳轉

圖3-1           流程圖符號

3-1所示的流程圖符號中,列舉了四種圖框和兩種流程線,具體說明如下:

l  起止框用于表示流程的開始或結束;

l  輸入/輸出框用平行四邊形表示,在平行四邊形內可以寫明輸入或輸出的內容;

l  判斷框用菱形表示,它的作用是對條件進行判斷,根據條件是否成立來決定如何執行后續的操作;

l  處理框用矩形表示,它代表程序中的處理功能,如算術運算和賦值等;

l  流程線用實心單向箭頭或直線表示,可以連接不同位置的圖框,流程線的標準流向是從左到右和從上到下,可用直線表示,非標準流向的流程線應使用箭頭指示方向;

l  連接點用圓形表示,用于流程圖的延續。

通過上面的講解,初學者對流程圖符號有了簡單的認識,接下來先來看一個簡單的流程圖,如圖3-2所示。


3 C語言 流程控制 循環 跳轉

圖3-2           判斷奇偶數

3-2表示的是一個判斷奇偶數的流程圖,下面針對該流程圖中的執行順序進行說明,具體如下:

1步:程序開始;

2步:進入處理框,將變量number賦值為1

3步:進入判斷框,判斷number是否為偶數,如果是偶數,則進入下面的輸出框,輸出number是偶數;否則進入左面的輸出框,輸出number是奇數;

4步:輸出完成后,進入結束狀態,程序終止。

3.2  順序結構語句

前面章節講解的程序都有一個共同的特點,即程序中的所有語句都是從上到下逐條執行,這樣的程序結構叫做順序結構。順序結構是程序開發中最常見的一種結構,它可以包含多種語句,如變量的定義語句、輸入輸出語句、賦值語句等。下面來看一個順序結構的簡單例子,通過程序實現按順序輸出“我愛C語言”,如例3-1所示。

例3-1            

 

1  #include <stdio.h>
 2  int main()
 3  {
 4      printf("我\n");
 5      printf("愛\n");
 6      printf("C\n");
 7      printf("語\n");
 8      printf("言\n");
 9      return 0;
 10 }

運行結果如圖3-3所示。


3 C語言 流程控制 循環 跳轉

圖3-3           運行結果

在例3-1的程序中,使用了5printf()語句,從上往下依次輸出“我、愛、C、語、言”。從運行結果可以看出,程序是按照語句的先后順序執行的。因此,可以說明該程序是一個順序結構的程序。

3.3  選擇結構語句

在實際生活中經常需要作出一些判斷,比如開車來到一個十字路口,這時需要對紅綠燈進行判斷,如果前面是紅燈,就停車等候,如果是綠燈,就通行。同樣,在C語言中也經常需要對一些條件做出判斷,從而決定執行哪一段代碼,這時就需要使用選擇語句。選擇結構語句分為if條件語句和switch條件語句,接下來本小節將對它們進行詳細地講解。



1         條件分支語句

1.1      關系運算符

C語言中0代表假,非0代表真,

在計算機程序判斷是根據一個條件返回是真還是假來做不同的操作。

1.1.1         < 

 

1.1.2         <=

 

1.1.3         > 

 

1.1.4         >=

 

1.1.5         ==

一個=號在C語言里面是賦值的,不是比較的,但是很多初學者愛犯一個嚴重的錯誤,就是用=號來比較兩個數是否相等

1.1.6         !=

!=

1.2      關系運算符優先級

前四種相同,后兩種相同,前四種高于后兩種優先級

1.3      邏輯運算符

1.3.1         &&

邏輯與

1.3.2         ||

邏輯或

1.3.3         !

邏輯非









3.3.1    if條件語句

if條件語句分為三種語法格式,每一種格式都有其自身的特點,下面分別進行講解。

1if語句

if語句是指如果滿足某種條件,就進行相應的處理。例如,小明媽媽跟小明說“如果你考試得了100分,星期天就帶你去游樂場玩”。這句話可以通過下面的一段偽代碼來描述。

如果小明考試得了100

媽媽星期天帶小明去游樂場

在上面的偽代碼中,“如果”相當于C語言中的關鍵字if,“小明考試得了100分”是判斷條件,需要用()括起來,“媽媽星期天帶小明去游樂場”是執行語句,需要放在{}中。修改后的偽代碼如下:

if (小明考試得了100分)
{
     媽媽星期天帶小明去游樂場
}
上面的例子就描述了if語句的用法,在C語言中,if語句的具體語法格式如下:
if (條件語句)
{
   代碼塊
}

上述語法格式中,判斷條件是一個布爾值,當判斷條件為true時,{}中的執行語句才會被執行。if語句的執行流程如圖3-4所示。


3 C語言 流程控制 循環 跳轉

圖3-4           if語句流程圖

接下來通過一個案例來學習if語句的具體用法,如例3-2所示。

例3-2            

 1  #include<stdio.h>
 2  int main()
 3  {
 4      //聲明變量x
 5      int x = 5;
 6      //如果x的值小于10則執行if大括號中的代碼
 7      if (x < 10)
 8      {
 9          x++;
 10     }
 11     printf("x=%d\n" , x);
 12     return 0;
 13 }

運行結果如圖3-5所示。


3 C語言 流程控制 循環 跳轉

圖3-5           運行結果

3-2中,定義了一個變量x,其初始值為5。在if語句的判斷條件中判斷x的值是否小于10,很明顯條件成立,因此{}中的語句會被執行,變量x的值將進行自增。從圖3-5的運行結果可以看出,x的值已由原來的5變成了6

2if…else語句

if…else語句是指如果滿足某種條件,就進行相應的處理,否則就進行另一種處理。例如,要判斷一個正整數的奇偶,如果該數字能被2整除則是一個偶數,否則該數字就是一個奇數。if…else語句的具體語法格式如下:

if (判斷條件)
{
    執行語句1
    ……
}
else
{
    執行語句2
    ……
}

上述語法格式中,判斷條件是一個布爾值。當判斷條件為true時,if后面{}中的執行語句1會被執行。當判斷條件為false時,else后面{}中的執行語句2會被執行。if…else語句的執行流程如圖3-6所示。


3 C語言 流程控制 循環 跳轉

圖3-6            if…else語句流程圖

接下來通過一個實現奇偶數判斷的案例來演示if..else語句的具體用法,如例3-3所示。

例3-3            

 

1  #include<stdio.h>
 2  int main()
 3  {
 4      int num = 19;
 5      if (num % 2 == 0)
 6      {
 7          //判斷條件成立,num被2整除
 8          printf("num是一個偶數\n");
 9      }
 10     else
 11     {
 12         printf("num是一個奇數\n");
 13     }
 14     return 0;
 15 }

運行結果如圖3-7所示。


3 C語言 流程控制 循環 跳轉

圖3-7            運行結果

3-3中,變量num的值為19,模以2的結果為1,不等于0,判斷條件不成立。因此會執行else后面{}中的語句,打印“num是一個奇數”。

3if…else if…else語句

if…else if…else語句用于對多個條件進行判斷,從而進行多種不同的處理。例如,對一個學生的考試成績進行等級的劃分,如果分數大于等于80分等級為優,如果分數小于80分大于等于70分等級為良,如果分數小于70分大于等于60分等級為中,否則,等級為差。if…else if…else語句的具體語法格式如下:

if (判斷條件1)
{
    執行語句1
}
else if (判斷條件2)
{
    執行語句2
}
……
else if (判斷條件n)
{
    執行語句n
}
else
{
    執行語句n+1
}

上述語法格式中,判斷條件是一個布爾值。當判斷條件1true時,if后面{}中的執行語句1會執行。當判斷條件1false時,會繼續執行判斷條件2,如果為true則執行語句2,以此類推,如果所有的判斷條件都為false,則意味著所有條件均未滿足,else后面{}中的執行語句n+1會被執行。if…elseif…else語句的執行流程如圖3-8所示。


3 C語言 流程控制 循環 跳轉

圖3-8            if…else if…else語句的流程圖

接下來通過一個對學生考試成績進行等級劃分的案例來演示if…else if…else語句的用法,如例3-4所示。

例3-4            

 1  #include<stdio.h>
 2  int main()
 3  {
 4      int grade = 75; //定義學生成績
 5      if (grade >= 80)
 6      {
 7          //滿足條件grade >=80
 8          printf("該成績的等級為優\n");
 9      }
 10     else if (grade >= 70)
 11     {
 12         //不滿足條件 grade >= 80 ,但滿足條件 grade >= 70
 13         printf("該成績的等級為良\n");
 14     }
 15     else if (grade >= 60)
 16     {
 17         //不滿足條件 grade >= 70 ,但滿足條件 grade >= 60
 18         printf("該成績的等級為中\n");
 19     }
 20     else
 21     {
 22         //不滿足條件 grade >= 60
 23         printf("該成績的等級為差\n");
 24     }
 25     return 0;
 26 }

運行結果如圖3-9所示。

3 C語言 流程控制 循環 跳轉


圖3-9           運行結果

3-4中,定義了學生成績grade75。它不滿足第一個判斷條件grade>=80,會執行第二個判斷條件grade>=70,條件成立,因此會打印“該成績的等級為良”。

&多學一招:三元運算符

C語言中有一種特殊的運算叫做三元運算,它和if…else語句類似,具體語法格式如下:

判斷條件? 表達式1 : 表達式2

三元運算通常用于對某個變量進行賦值,當判斷條件成立時,運算結果為表達式1的值,否則結果為表達式2的值。

例如求兩個數xy中的較大者,如果用if…else語句來實現,具體代碼如下:

int x = 0;
int y = 1;
int max;
if (x > y)
{
    max = x;
} else
{
    max = y;
}

上面的代碼運行之后,變量max的值為1。如果if…else語句用三元運算來替換,具體代碼如下:

int x = 0;
int y = 1;
int max;
max = x > y ? x : y;

3.3.2    switch條件語句

switch 條件語句也是一種很常用的選擇語句,和if條件語句不同,它只能針對某個表達式的值作出判斷,從而決定程序執行哪一段代碼。例如,在程序中使用數字1~7來表示星期一到星期天,如果想根據某個輸入的數字來輸出對應中文格式的星期值,可以通過下面的一段偽代碼來描述:

用于表示星期的數字

    如果等于1,則輸出星期一

    如果等于2,則輸出星期二

    如果等于3,則輸出星期三

    如果等于4,則輸出星期四

    如果等于5,則輸出星期五

    如果等于6,則輸出星期六

    如果等于7,則輸出星期天

    如果不是1~7,則輸出此數字為非法數字

對于上面一段偽代碼的描述,大家可能會立刻想到用剛學過的if…else if…else語句來實現,但是由于判斷條件比較多,實現起來代碼過長,不便于閱讀。這時就可以使用C語言中的switch語句來實現這種需求。在switch語句中switch關鍵字后面有一個表達式,case關鍵字后面有目標值,當表達式的值和某個目標值匹配時,會執行對應case下的語句。接下來通過一段偽代碼來描述switch語句的基本語法格式,具體如下:

switch (表達式)
{
    case 目標值1:
        執行語句1
        break;
    case 目標值2:
        執行語句2
        break;
    ……
    case 目標值n:
        執行語句n
        break;
    default:
        執行語句n+1
        break;
}

在上面的語法格式中,switch語句將表達式的值與每個case中的目標值進行匹配,如果找到了匹配的值,就會執行相應case后的語句,否則執行default后的語句。關于switch語句中的break關鍵字將在后面的小節中做具體介紹,此處,初學者只需要知道break的作用是跳出switch語句即可。

接下來通過一個案例來實現根據數字輸出中文格式的星期的功能,如例3-5所示。

例3-5            

 

1  #include<stdio.h>
 2  int main()
 3  {
 4      int week = 5;
 5      switch (week)
 6      {
 7      case 1:
 8          printf("星期一");
 9          break;
 10     case 2:
 11         printf("星期二");
 12         break;
 13     case 3:
 14         printf("星期三");
 15         break;
 16     case 4:
 17         printf("星期四");
 18         break;
 19     case 5:
 20         printf("星期五");
 21         break;
 22     case 6:
 23         printf("星期六");
 24         break;
 25     case 7:
 26         printf("星期天");
 27         break;
 28     default:
 29         printf("輸入的數字不正確...");
 30         break;
 31     }
 32     return 0;
 33 }

運行結果如圖3-10所示。


3 C語言 流程控制 循環 跳轉

圖3-10       運行結果

3-5中,由于變量week的值為5,整個switch語句判斷的結果滿足第19行的條件,因此打印“星期五”。程序中的default語句用于處理和前面的case都不匹配的情況,將第5行代碼替換為int week = 8,再次運行程序,輸出結果如圖3-11所示。


3 C語言 流程控制 循環 跳轉

圖3-11       運行結果

在使用switch語句的過程中,如果多個case條件后面的執行語句是一樣的,則該執行語句只需書寫一次即可,這是一種簡寫的方式。例如,使用數字1~7來表示星期一到星期天,當輸入的數字為12345時視為工作日,否則視為休息日,這時如果需要判斷一周中的某一天是否為工作日,就可以采用switch語句的簡寫方式,具體如例3-6所示。

例3-6            

 

1  #include<stdio.h>
 2  int main()
 3  {
 4      int week = 2;
 5      switch (week)
 6      {
 7      case 1:
 8      case 2:
 9      case 3:
 10     case 4:
 11     case 5:
 12         //當week 滿足值 1、2、3、4、5 中任意一個時,處理方式相同
 13         printf("今天是工作日\n");
 14         break;
 15     case 6:
 16     case 7:
 17         //當week 滿足值 6、7 中任意一個時,處理方式相同
 18         printf("今天是休息日\n");
 19         break;
 20     }
 21     return 0;
 22 }

運行結果如圖3-12所示。

3 C語言 流程控制 循環 跳轉


圖3-12       運行結果

3-6中,當變量week的值為12345中任意一個值時,處理方式相同,都會打印“今天是工作日”。同理,當變量week值為67中任意一個值時,打印“今天是休息日”。

3.4  循環結構語句

在實際生活中經常會將同一件事情重復做很多次,比如在走路時,會重復使用左右腳,打乒乓球時,會重復揮拍的動作等。同樣在C語言中,也經常需要重復執行同一代碼塊,這時就需要使用循環語句。循環語句分為while循環語句、do…while循環語句和for循環語句三種。接下來,本小節將針對這三種循環語句分別進行詳細地講解。

3.4.1    while循環語句

while循環語句和3.3小節講到的條件判斷語句有些相似,都是根據條件判斷來決定是否執行大括號內的執行語句。區別在于,while語句會反復地進行條件判斷,只要條件成立,{}內的執行語句就會一直執行,直到條件不成立,while循環結束。while循環語句的具體語法格式如下:

while (循環條件)
{
    執行語句
………
}

在上面的語法格式中,{}中的執行語句被稱作循環體,循環體是否執行取決于循環條件。當循環條件為true時,循環體就會被執行。循環體執行完畢時會繼續判斷循環條件,如條件仍為true則會繼續執行,直到循環條件為false時,整個循環過程才會結束。

while循環的執行流程如圖3-13所示。


3 C語言 流程控制 循環 跳轉

圖3-13       while循環的流程圖

接下來通過while語句來實現1~4之間自然數的打印,如例3-7所示。

例3-7            

 

1  #include <stdio.h>
 2  int main()
 3  {
 4      int x = 1;                  //定義變量x,初始值為1
 5      while (x <= 4)             // 循環條件
 6      {
 7          printf("x = %d\n", x);// 條件成立,打印x的值
 8          x++;                    // x進行自增
 9      }
 10     return 0;
 11 }

運行結果如圖3-14所示。

3 C語言 流程控制 循環 跳轉


圖3-14       while循環

3-7中,x的初始值為1,在滿足循環條件x <= 4的情況下,循環體會重復執行,打印x的值并讓x進行自增。因此打印結果中x的值分別為1234。值得注意的是,例3-7中的第8行代碼用于在每次循環時改變變量x的值,直到循環條件不成立,如果沒有這行代碼,整個循環會進入無限循環的狀態,永遠不會結束。

3.4.2    do-while循環語句

do…while循環語句和while循環語句功能類似,二者的不同之處在于,while語句需要先判斷循環條件,然后根據判斷結果來決定是否執行大括號中的代碼,而do…while循環語句先要執行一次大括號內的代碼再判斷循環條件,其具體語法格式如下:

do
{
執行語句
………
} while(循環條件);

在上面的語法格式中,關鍵字do后面{}中的執行語句是循環體。do…while循環語句將循環條件放在了循環體的后面。這也就意味著,循環體會無條件執行一次,然后再根據循環條件來決定是否繼續執行。

do…while循環的執行流程如圖3-15所示。

3 C語言 流程控制 循環 跳轉


圖3-15        do…while循環的執行流程

接下來使用do…while循環語句將例3-7進行改寫,如例3-8所示。

例3-8            

 1  #include <stdio.h>
 2  int main()
 3  {
 4      int x = 1;                 //定義變量x,初始值為1
 5      do         
 6      {
 7          printf("x = %d\n", x);// 條件成立,打印x的值
 8          x++;                    // x進行自增
 9      } while (x <= 4);          // 循環條件
 10     return 0;
 11 }

運行結果如圖3-16所示。

3 C語言 流程控制 循環 跳轉

 

圖3-16       do while實例

3-8和例3-7的運行結果一致,這說明do …while循環和while循環能實現同樣的功能。然而在程序運行過程中,這兩種語句還是有差別的。如果循環條件在循環語句開始時就不成立,那么while循環的循環體一次都不會執行,而do…while循環的循環體還是會執行一次。若將例中的循環條件x<=4改為x < 1,例3-8會打印x=1,而例3-7什么也不會打印。

3.4.3    for循環語句

在前面的小節中分別講解了while循環和do…while循環。在程序開發中,還經常會使用另一種循環語句,即for循環,它通常用于循環次數已知的情況,其具體語法格式如下:

for(初始化表達式; 循環條件; 操作表達式)
{
        執行語句
        ………
}

在上面的語法格式中,for關鍵字后面()中包括了初始化表達式、循環條件和操作表達式三部分內容,它們之間用“;”分隔,{}中的執行語句為循環體。

接下來分別用“①”表示初始化表達式、“②”表示循環條件、“③”表示操作表達式、“④”表示循環體,通過序號來具體分析for循環的執行流程。具體如下:

for(① ; ; ③)

{

       

}

第一步,執行①

第二步,執行②,如果判斷結果為true,執行第三步,如果判斷結果為false,執行第五步

第三步,執行④

第四步,執行③,然后繼續執行第二步

第五步,退出循環

接下來通過一個案例對自然數1~4進行求和,如例3-9所示。

例3-9            

 1  #include<stdio.h>
 2  int main()
 3  {
 4      int sum = 0;                    //定義變量sum,用于記住累加的和
 5      for (int i = 1; i <= 4; i++) //i的值會在1~4之間變化
 6      {
 7          sum += i;                   //實現sum與i的累加
 8      }
 9      printf("sum = %d \n", sum);   //打印累加的和
 10     return 0;
 11 }

運行結果如圖3-17所示。

 3 C語言 流程控制 循環 跳轉

圖3-17        運行結果

3-9中,變量i的初始值為1,在判斷條件i<=4true的情況下,會執行循環體sum+=i,執行完畢后,會執行操作表達式i++i的值變為2,然后繼續進行條件判斷,開始下一次循環,直到i=5時,條件i<=4false,結束循環,執行for循環后面的代碼,打印“sum=10”。

為了讓初學者能熟悉整個for循環的執行過程,現將例3-9運行期間每次循環中變量sumi的值通過表3-1羅列出來。

表3-1           sumi循環中的值

循環次數

sum

i

第一次

1

1

第二次

3

2

第三次

6

3

第四次

10

4

3.4.4    循環嵌套

有時為了解決一個較為復雜的問題,需要在一個循環中再定義一個循環,這樣的方式被稱作循環嵌套。在C語言中,whiledo…whilefor循環語句都可以進行嵌套,并且它們之間也可以互相嵌套,這當中最常見的就是在for循環中嵌套for循環,具體語法格式如下:

for(初始化表達式; 循環條件; 操作表達式)
{
        ………
        for(初始化表達式; 循環條件; 操作表達式)
{
            執行語句;
            ………
        }
        ………
}

接下來通過for語句的循環嵌套來實現使用“*”打印直角三角形,如例3-10所示。

例3-10        

 

1  #include<stdio.h>
 2  int main()
 3  {
 4      int i, j;                       //定義兩個循環變量
 5      for (i = 1; i <= 9; i++)     //外層循環
 6      {
 7          for (j = 1; j <= i; j++) //內層循環
 8          {
 9              printf("*");          //打印*
 10         }
 11         printf("\n");             //換行
 12     }
 13     return 0;
 14 }

運行結果如圖3-18所示。


 

3 C語言 流程控制 循環 跳轉

圖3-18        運行結果

在例3-10中定義了兩層for循環,分別為外層循環和內層循環,外層循環用于控制打印的行數,內層循環用于打印“*”,每一行的“*”個數逐行增加,最后輸出一個直角三角形。由于嵌套循環程序比較復雜,下面分步驟進行詳細地講解,具體如下:

第一步,在第4行代碼中定義了兩個循環變量ij,其中i為外層循環變量,j為內層循環變量。

第二步,在第5行代碼中將i初始化為1,條件i <= 9true,程序將首次進入外層循環的循環體。

第三步,在第7行代碼中將j初始化為1,由于此時i的值為1,條件j <= itrue,程序將首次進入內層循環的循環體,打印一個“*”。

第四步,執行第7行代碼中內層循環的操作表達式j++,將j的值自增為2

第五步,執行第7行代碼中的判斷條件j<=i,判斷結果為false,內層循環結束。執行后面的代碼,打印換行符。

第六步,執行第5行代碼中外層循環的操作表達式i++,將i的值自增為2

第七步,執行第5行代碼中的判斷條件i<=9,判斷結果為true,程序將進入外層循環的循環體,繼續執行內層循環。

第八步,由于i的值為2,內層循環會執行兩次,即在第2行打印兩個“*”。在內層循環結束時會打印換行符。

第九步,以此類推,在第3行會打印3個“*”,逐行遞增,直到i的值為10時,外層循環的判斷條件i <= 9結果為false,外層循環結束,整個程序也就結束了。

3.4.5    跳轉語句(breakgotocontinue

跳轉語句用于實現循環執行過程中程序流程的跳轉,在C語言中,跳轉語句有break語句、goto語句和continue語句。接下來分別進行詳細地講解。

1break語句

switch條件語句和循環語句中都可以使用break語句。當它出現在switch條件語句中時,作用是終止某個case并跳出switch結構。當它出現在循環語句中,作用是跳出當前循環語句,執行后面的代碼。接下來通過一個具體的案例來演示break語句如何跳出當前循環,如例3-11所示。

例3-11        

 1  #include<stdio.h>
 2  int main()
 3  {
 4      int x = 1;      //定義變量x,初始值為1
 5      while (x <= 4) //循環條件
 6      {
 7          printf("x = %d\n", x); //條件成立,打印x的值
 8          if (x == 3)
 9          {
 10             break;
 11         }
 12         x++;          //x進行自增
 13     }
 14     return 0;
 15 }

運行結果如圖3-19所示。

 

3 C語言 流程控制 循環 跳轉

圖3-19        運行結果

3-11中,通過while循環打印x的值,當x的值為3時使用break語句跳出循環。因此打印結果中并沒有出現“x=4”。

2goto語句

break語句出現在嵌套循環中的內層循環時,它只能跳出內層循環,如果想要跳出外層循環則需要對外層循環添加標記,然后使用goto語句。接下來通過一個案例來演示如何使用goto語句,如例3-12所示。

例3-12        

 

1  #include<stdio.h>
 2  int main()
 3  {
 4   
 5      int i, j;                        //定義兩個循環變量
 6      for (i = 1; i <= 9; i++)     //外層循環
 7      {
 8          for (j = 1; j <= i; j++) //內層循環
 9          {
 10             if (i > 4)            //判斷i的值是否大于4
 11             {
 12                 goto end;        //跳至標識為end的語句
 13             }
 14             printf("*");         //輸出*
 15         }
 16         printf("\n");            //換行
 17     }
 18      end: return 0;
 19 }

運行結果如圖3-20所示。

 3 C語言 流程控制 循環 跳轉

圖3-20        運行結果

3-12中,在return語句前面增加了標記“end”。當i>4時,使用“goto end;”語句跳出外層循環。因此程序只打印了4行“*”。

3continue語句

在循環語句中,如果希望立即終止本次循環,并執行下一次循環,此時就需要使用continue語句。接下來通過一個1~100之內的奇數求和的案例來演示continue語句的使用,如例3-13所示。

例3-13        

 

1  #include<stdio.h>
 2  int main()
 3  {
 4      int sum = 0;           //定義變量sum,用于記住和
 5      for (int i = 1; i <= 100; i++)
 6      {
 7          if (i % 2 == 0)   //如果i是一個偶數,執行if語句中的代碼
 8          {
 9              continue;      //結束本次循環
 10         }
 11         sum += i;          //實現sum和i的累加
 12     }
 13     printf("sum = %d\n", sum);
 14     return 0;
 15 }

運行結果如圖3-21所示。

 3 C語言 流程控制 循環 跳轉

圖3-21        運行結果

3-13使用for循環讓變量i的值在1~100之間循環,在循環過程中,當i的值為偶數時,將執行continue語句結束本次循環,進入下一次循環。當i的值為奇數時,sumi進行累加,最終得到1~100之間所有奇數的和,打印“sum= 2500”。

3.5  本章小結

本章首先介紹了程序的運行流程圖,然后講解了C語言中最基本的三種流程控制語句,包括順序結構語句、選擇結構語句和循環語句。

通過本章的學習,初學者應該能夠熟練的運用if判斷語句、switch判斷語句、while循環語句、do-while循環語句以及for循環語句。掌握本章的內容就能夠編寫邏輯比較復雜的C語言程序并且有助于后面章節的學習。

 

3.6  習題

一、填空題

       1、通常情況下使用______語句來跳出當前循環。

2、程序中的語句由上往下依次執行的是______結構語句。

3for關鍵字后面()中包括了三部分內容,分別是初始化表達式、______和操作表達式

4if條件語句分為三種語法格式,分別是__________________

5、假設int x = 2,三元表達式 x>0?x+1:5 的運算結果是______

二、判斷題

1、程序的運行流程圖中,處理框用平行四邊形來表示。

2break語句只用于循環語句中,它的作用是跳出循環。

3do…while循環語句中的循環體至少會執行一次。

4while循環中不能再定義另一個循環。

5switch條件語句中,default語句可用于處理和前面的case都不匹配的值。

三、選擇題

1、以下選項中,哪個不屬于switch語句的關鍵字?

Abreak    Bcase    Cfor    Ddefault

2、下列語句哪些屬于循環語句?(多選)

Afor語句    Bif語句    Cwhile語句    Dswitch語句

3、以下選項中哪些描述是正確的?(多選)

A、循環語句必須要有中止條件否則不能編譯            Bbreak關鍵字用于跳出當前循環 

Ccontinue關鍵字用于終止本次循環,執行下一次循環Dswitch條件語句中可以使用break

4、以下程序片段運行結束后,輸出結果是?

for (int i = 1; i<7; i++)

{

       if (i % 3 == 0)

       {

           break;

        }

       printf("%d", i);

}

A123456     B1245     C123     D12 

5、請先閱讀下面的代碼

int x = 1;

int y = 2;

if (x % 2 == 0)

 {

    y++;

}

else

{

    y--;

}

printf("y=%d",y);

       上面一段程序運行結束時,變量y的值為下列哪一項?

A1     B2     C3     D4

四、程序分析題

閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運行的結果。否則請說明編譯失敗的原因。

代碼一:

#include<stdio.h>

int main()

{

        int x= 4, j = 0;

        switch(x)

 {

            case 1:

                j++;

            case 2:

                j++;

            case 3:

                j++;

            case 4:

                j++;

            case 5:

                j++;

            default:

                j++;

        }

        printf(“%d”,j\n);

        return0;

    }

代碼二:

#include<stdio.h>

int main()

{

        int n = 9;

        while (n > 6)

        {

            printf("%d\n",n);

            n--;

        }

        return 0;

}

五、簡答題

1、請說出你知道的跳轉語句,并分別說明它們之間的區別。

2、請說明while循環與for循環的異同。

六、編程題

1、請編寫程序,實現對奇數和偶數的判斷。

提示:

1)  定義一個int類型變量x,該變量的值為5

2)  使用if…else語句對x進行判斷,如果是奇數就輸出“x是一個奇數”,否則輸出“x是偶數”。

2、請編寫程序,實現對“1+3+5+7+…+99”的求和功能。

         提示:

1)  使用循環語句實現自然數1~99的遍歷。

2)  在遍歷過程中,判斷當前遍歷的數是否為奇數,如果是就累加,否則不加。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海南省| 高雄市| 铁岭市| 呼伦贝尔市| 老河口市| 凤冈县| 金湖县| 嘉峪关市| 龙江县| 新田县| 湖南省| 固镇县| 星子县| 土默特左旗| 东宁县| 高碑店市| 介休市| 宁陕县| 原阳县| 三江| 桃江县| 鹤岗市| 通城县| 赤城县| 威海市| 永城市| 错那县| 沁源县| 长汀县| 施秉县| 陆良县| 泾川县| 台北县| 通海县| 永胜县| 历史| 油尖旺区| SHOW| 青河县| 会理县| 廉江市|