1. 程式人生 > 其它 >C語言-分支與迴圈

C語言-分支與迴圈

C語言之分支與迴圈

前言

C語言是一門結構化的程式設計語言,主要分為三種結構:
1.順序結構
2.選擇結構
3.迴圈結構
下面我們主要探討的是選擇結構和迴圈結構。

分支語句和迴圈語句

分支語句

  • if
  • switch

迴圈語句

  • while
  • for
  • do while

goto語句

問:那什麼是語句?
C語言中由一個分號(;)隔開的就是一個語句。

一、分支語句(選擇結構)

舉個栗子:當你站在學習的分岔口時,你可以選擇是否學習,然後當有一天你遇到了改變你命運的機會,那麼這個時候:
好好學習+機遇=人生巔峰;不好好學習+機遇=回家放羊;
這就是選擇,我們的每一個選擇都決定著我們的人生(這個時候請富二代自行划走)。

1.if語句

if語句的三種情況:

    if(表示式)    //如果表示式為真,則執行語句
語句;

    if(表示式)
語句1;
    else(表示式)
語句2;

    if(表示式)
語句1;
    else if(表示式)
語句2;
    else
語句3;
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int age=10;

     if(age>0&&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<150)
       printf("老年\n");
     else
      {
        printf("輸入錯誤\n");
        printf("請更改\n");
	  }
    return 0;
}

1.解釋(如果表示式為真,則執行語句):
在C語言中如何表示真假,0表示假,非0表示真
2.if語句怎樣使用多條語句:
使用程式碼塊{ },將語句放置在花括號中

錯誤示例:

int main()
{
    int x=0;
    int s=1;
     if(x==1)//==判斷相等 =賦值
        if(s==1)
         printf("文字\n");
        else
         printf("數字\n");
    return 0;
}
注意: 這種情況程式不執行!
      第一個表示式(x=1)不為真,並且沒有else與之匹配。
      else與離它最近且未匹配的if進行配對。

2.switch語句

switch語句也是分支語句的一種,它常常用於多分支的情況。
就是因為一直使用else if太麻煩了,所以有了switch語句。

switch(整型表示式)
 {
  語句項;
 }

 問:那什麼是語句項?
  case 整形常量表達式:
    語句;
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int win = 0;
    scanf("%d",&win);

     switch(win)
     {
     case 1:
         printf("IG");
         break;
     case 2:
         printf("FPX");
         break;
     case 3:
         printf("EDG");
         break;
     case 4:
         printf("RNG");
         break;
     case 5:
         printf("TES");
         break;
     default:
         printf("輸入錯誤");
         break;
     }
    return 0;
}

注意:
1.想輸出單個分支內容
在switch語句中,我們沒辦法直接實現分支,所以需要搭配 break 使用,
break的實際效果就是把語句結束。
2.default語句:
如果輸入的東西與所有的case標籤都不一樣,可以加入一條default語句,
程式就會執行default語句的內容,每個switch語句只能有一個default子句,
但是它可以出現在語句列表的任何位置,語句流會向貫穿case標籤一樣貫穿default子句。

二、迴圈語句

再舉個栗子:當你再次站在學習的分岔口時,這個時候你不一樣了,你有身份,你是世界第二富的兒子,你還是可以選擇是否學習:
好好學習+機遇=人生巔峰;不好好學習+自己製造機遇=人生巔峰;不好好學習+金錢的力量=人生巔峰;
這可能是現實,雖然不喜歡這樣,但是沒有傘的孩子必須奔跑。

1.while迴圈

當滿足條件時,if語句的執行只會執行一次,但實際上,同一件事,我們需要完成很多次,這個時候就需要用到while語句來幫助我們實現迴圈。

while(表示式)
 迴圈語句;
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int s = 1;
    while(s<=10)
   {
   /*
   if(s==9)
   continue;
  如果加上,會進入一個死迴圈,因為s++寫在後面,
  當s等於9時,跳過了後面的程式碼,包括s++,
  所以s數值不變,返回迴圈是依然是9。
   */
    printf("%d\n",s );
    s++;
    }
    return 0;
}
補充:
    continue
continue用於終止迴圈中本次迴圈continue後的程式碼,直接跳到下一次迴圈入口。
    break
break用於停止後面的所有迴圈,直接終止。

2.for迴圈

for(表示式1;表示式2;表示式3)
  迴圈語句;
  1.表示式1為初始化部分,用來初始化迴圈變數
  2.表示式2為條件判斷部分,用於判斷迴圈什麼時候終止
  3.表示式3為調整部分,用於迴圈條件的調整
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int s = 0;
    for(s=1;s<=10;s++)
    printf("%d\n",s);
    return 0;
}

對比for迴圈與while迴圈

1.在while迴圈中依然存在迴圈的三個必要條件,但由於風格問題使它們離的比較遠,所以修改不夠集中和方便,與之相比,for迴圈風格更好,所以for迴圈的使用頻率較高。
2.for迴圈中也可以使用break和continue,意義和while迴圈中的一樣,只不過因為for迴圈的條件判斷部分在前邊,所以當使用continue是不會陷入死迴圈。

建議:
不可以在for迴圈體內修改迴圈變數,防止for迴圈失去控制
for迴圈的迴圈控制變數的取值採用“前閉後開區間”寫法

3.do while迴圈

do
    迴圈語句;
while(表示式);
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int s = 1;
    do
    {
    printf("%d\n",s);
    s++;
    }
    while(s<=10);
    return 0;
}

do語句特點:
迴圈至少執行一次,使用的場景有限,所以不是經常使用

結尾

分支與迴圈的內容就到此結束了,但是學習是不可以停止的。