<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      編程成長之路

      我們都是站在父母的肩上去看他們不曾看到的風景!加油!
        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理

      分支與循環

      Posted on 2023-05-19 23:48  來顆維C  閱讀(72)  評論(0)    收藏  舉報

      在C語言中,語句可分為以下五類:
      ?? 1. 表達式語句
      ?? 2. 函數調用語句
      ?? 3. 控制語句
      ?? 4. 復合語句
      ?? 5. 空語句

      而今天我們要探討的就是控制語句里面的分支和循環。
      控制語句:控制語句用于控制程序的執行流程,以實現程序的各種結構方式,它們由特定的語句定義符組成,C語言有九種控制語句。可分成以下三類:
      ?? 條件判斷語句也叫分支語句:if語句、switch語句;
      ?? 循環執行語句:do while語句、while語句、for語句;
      ?? 轉向語句:break語句、goto語句、continue語句、return語句。

      一、分支語句
      ?? ?? 流程圖:

      ?? (1)if
      ?? ?? 1、概念
      if語句:指編程語言中用來判定所給定的條件是否滿足,根據判定的結果(真或假)決定執行給出的兩種操作之一。

      ?? ?? 2、if的使用方法

      ?? if(表達式)
      語句1

      ?? if(表達式)
      語句1
      else
      語句2

      ?? if(表達式)
      語句1
      else if(表達式)
      語句2
      else
      語句3
      (else if的數量無限制)

      ?? ?? 代碼?? ?? :

      include<stdio.h>

      int main()
      {
      int a = 0;

      if (a==0)//表達式
      {
      	printf("hehe\n");//語句1
      }
      else if(a>0)//表達式
      {
      	printf("haha\n");//語句2
      }
      else
      {
      	printf("GG\n");//語句3
      }
      
      return 0;
      

      }

      注意?? ??

      ??(1)懸空else?? ?? :

      //如下程序的結果是什么?

      include<stdio.h>

      int main()
      {
      int a = 1;
      int b = 3;

      if (a == 0)
      	if (b == 3)
      		printf("hehe\n");
      else
      	printf("haha\n");
      return 0;
      

      }

      輸出結果為haha,這里要注意else的就近原則,即else會和最近的if進行匹配。不良的代碼風格會造成懸空else,使得程序的可讀性下降,甚至造成誤會。

      ?? ?? 修改后(代碼?? ?? ):

      include<stdio.h>

      int main()
      {
      int a = 1;
      int b = 3;

      if (a == 0)
      {
      	if (b == 3)
      		printf("hehe\n");
      }
      else
      {
      	printf("haha\n");
      }
      
      return 0;
      

      }

      ??(2)關于判斷條件?? ?? :

      include<stdio.h>

      int main()
      {
      int a = 1;
      int b = 3;

      if (0 == a)
      {
      	if (3 == b)
      		printf("hehe\n");
      }
      else
      {
      	printf("haha\n");
      }
      
      return 0;
      

      }

      注意?? ??

      一般我們將常量寫在等式的左邊,當我們因為疏漏把”==“寫成了”=“時,程序會報錯(因為變量不能進行賦值)。但是當我們將常量寫在等式的右端時,程序不一定會報錯,將常量賦值給變量在計算機看來是沒有問題的。

      ?? (2)switch
      ?? ?? 1、概念(+關鍵字)
      switch是一種分支語句,常用于多分支的情況。
      關鍵字:case、break、default、switch

      ?? ?? 2、用法

      ?? (1)switch
      switch(整形表達式)
      {
      語句項;
      }

      ?? (2)case
      語句項的內容:
      case 整形常量表達式:
      語句:

      ?? (3)break
      switch中的break,能幫助我們實現真正的分支。switch語句執行時會從上到下根據括號中表達式的值作比較,當某個case語句中的表達式與此值相同時,就執行這個case語句或語句序列,直到遇到break為止。 break語句是必須有的,它用來結束switch語句的執行。

      ?? (4)default
      當所有case語句后面的表達式都不等于switch語句項中case后面整型常量表達式的值,就執行default后面的默認語句序列。不過,default部分是可選的。如果沒有這一部分,并遇到所有case語句都不匹配,那么,就不作任何處理而進入后續程序段的執行。

      ?? ?? 例如判斷星期幾,代碼?? ?? :

      include<stdio.h>

      int main()
      {
      int day = 1;

      switch (day)
      {
      case 1:
      	printf("Monday\n");
      	break;
      case 2:
      	printf("Tuesday\n");
      	break;
      case 3:
      	printf("Wednesday\n");
      	break;
      case 4:
      	printf("Thursday\n");
      	break;
      case 5:
      	printf("Friday\n");
      	break;
      case 6:
      	printf("Saturday\n");
      	break;
      case 7:
      	printf("Sunday\n");
      	break;
      default:
      	break;
      }
      
      return 0;
      

      }

      注意?? ?? (default)

      ?? 寫在任何一個 case 標簽可以出現的位置。
      ?? 當 switch 表達式的值并不匹配所有 case 標簽的值時,這個 default 子句后面的語句就會執行。
      ?? 所以,每個switch語句中只能出現一條default子句。
      ?? 但是它可以出現在語句列表的任何位置,而且語句流會像執行一個case標簽一樣執行default子句。

      二、循環語句
      ?? ?? 流程圖:

      ?? (1)while
      ?? ?? 概念
      while是計算機的一種基本循環模式。當滿足條件時進入循環,進入循環后,當條件不滿足時,跳出循環。while語句的一般表達式為:****while(表達式){循環體}。

      ?? ?? 代碼?? ?? :

      include<stdio.h>

      int main()
      {
      int a = 0;

      while (a < 10)
      {
      	//語句內容
      	a++;
      	printf("%d\t", a);
      }
      
      return 0;
      

      }

      ?? (2)for
      ?? ?? 1、概念
      for循環:編程語言中一種循環語句,而循環語句由循環體及循環的判定條件兩部分組成。

      ?? ?? 2、用法

      ?? for(表達式1; 表達式2; 表達式3)
      循環語句;
      表達式1:
      表達式1為初始化部分,用于初始化循環變量的。
      表達式2:
      表達式2為條件判斷部分,用于判斷循環時候終止。
      表達式3:
      表達式3為調整部分,用于循環條件的調整。

      ?? ?? 代碼?? ?? :

      include<stdio.h>

      int main()
      {
      //i可以定義在外面
      for (int i = 0; i < 10; i++)
      {
      printf("%d\t", i);
      }

      return 0;
      

      }

      ?? ?? 3、for循環變種:

      ?? (1)三個表達式都可以省略(初學時不建議省略)?? ??

      include<stdio.h>

      int main()
      {
      int i = 0;

      for (;;)
      {
      	//死循環
      	printf("hehe\t");
      }
      
      return 0;
      

      }

      ?? (2)雙重循環(用while也可以實現)?? ??

      include<stdio.h>

      int main()
      {
      for (int i = 0; i < 10; i++)
      {

      	for (int j = 0; j < 10; j++)
      	{
      		printf("hehe\t");
      	}
      	
      	printf("\n");
      	
      }
      return 0;
      

      }

      ?? (3)表達式里面的內容可以不止一條?? ??

      include<stdio.h>

      int main()
      {
      int i = 0;
      int j = 0;

      for (i = 0, j = 0; i < 10 && j < 10; i++, j++)
      {
      	printf("hehe\t");
      }
      
      return 0;
      

      }

      建議:
      ?? 1. 不可在for 循環體內修改循環變量,防止 for 循環失去控制。
      ?? 2. 建議for語句的循環控制變量的取值采用“前閉后開區間”寫法。
      ?? ?? :

      for (int i = 0; i < 10; i++)
      {}
      
      for (int i = 0; i <= 9; i++)
      {}
      

      ?? (3)do while
      ?? ?? 概念
      do…while 循環: while 循環的變體。在檢查while()條件是否為真之前,該循環首先會執行一次do{}之內的語句,然后在while()內檢查條件是否為真,如果條件為真的話,就會重復do…while這個循環,直至while()為假。

      ?? ?? 代碼?? ?? :

      include<stdio.h>

      int main()
      {
      int a = 0;

      do 
      {
      	printf("%d\t", a);
      	a++;
      } while (a < 10);
      
      return 0;
      

      }

      總結:
      ?? 1、區別while和for。

      ?? ??代碼?? ?? :

      include<stdio.h>

      int main()
      {
      int i = 0;

      while (i++ < 10)
      {
      	printf("hehe\t");
      }
      printf("\n");
      
      for (int j = 0; j < 10; j++)
      {
      	printf("hehe\t");
      }
      printf("\n");
      
      return 0;
      

      }

      可以發現在while循環中依然存在循環的三個必須條件,但是由于風格的問題使得三個部分很可能偏離較遠,這樣查找修改就不夠集中和方便。所以,for循環的風格更勝一籌;for循環使用的頻率也最高。

      ?? ?? 代碼?? ?? :

      include<stdio.h>

      int main()
      {
      int i = 0;

      while (i++ < 10)
      {
      	printf("%d\t",i);
      }
      printf("\n");
      //輸出結果1、2、3、4、5、6、7、8、9、10
      for (int j = 0; j < 10; j++)
      {
      	printf("%d\t", j);
      }
      printf("\n");
      //輸出結果0、1、2、3、4、5、6、7、8、9
      return 0;
      

      }

      注意?? ??
      while和for里面的自增(自減)不同,while里面的自增(自減)會在判斷過后就進行,而for里面的會在本次循環結束后再進行。(曾跌進這個坑里)?? ??

      ?? 2、區別continue、break、return

      continue結束的是本次循環,break結束的是本層循環,而return可以跳出所有循環。

      ?? ?? 代碼?? ??:

      //下面程序的運行結果是什么?

      include<stdio.h>

      int main()
      {
      int i = 0;

      while (i<10)
      {
      	if (5 == i)
      	{
      		continue;
      	}
      	printf("%d\t", i);
      	i++;
      }
      //結果為0、1、2、3、4后面死循環
      return 0;
      

      }

      結果為1、2、3、4后面死循環,因為i==5時會進入判斷語句,continue跳出,下面的打印和自增都不會進行,所以i等于5后一直死循環。

      ?? ?? 代碼?? ?? :

      //下面程序的運行結果是什么?

      include<stdio.h>

      int main()
      {
      int i = 0;

      while (i<10)
      {
      	if (5 == i)
      	{
      		break;
      	}
      	printf("%d\t", i);
      	i++;
      }
      //結果為0、1、2、3、4
      return 0;
      

      }

      結果為0、1、2、3、4,當i==5時進入判斷,break直接跳出這個循環。當在雙層循環的內層循環里面使用break時,會跳出里面那層循環。

      注意?? ??
      break、continue用于循環語句,但break還可以用于分支語句的switch。

      三、goto語句
      ?? ?? 概念
      goto語句:也可以稱為無條件轉移語句,其一般格式如:goto 語句標號; 其中語句標號是按標識符規定書寫的符號, 放在某一語句行的前面,標號后加半角冒號“:”。語句標號起標識語句的作用,與 goto 語句配合使用。

      ?? ?? ?? ?? :

      for(...)
      for(...)
      {
      for(...)
      {
      if(disaster)
      goto error;
      }
      }

      error:
      if(disaster)
      // 處理錯誤情況

      ?? C語言中提供了可以隨意濫用的 goto語句和標記跳轉的標號。
      ?? 從理論上 goto語句是沒有必要的,實踐中沒有goto語句也可以很容易的寫出代碼。
      ?? 但是某些場合下goto語句還是用得著的,最常見的用法就是終止程序在某些深度嵌套的結構的處理過程。 例如:一次跳出兩層或多層循環。
      ?? 多層循環這種情況使用break是達不到目的的。它只能從最內層循環退出到上一層的循環。

      ?? ?? 代碼(關機程序)?? ?? :

      include <stdio.h>

      int main()
      {
      char input[10] = {0};
      system("shutdown -s -t 60");
      again:
      printf("電腦將在1分鐘內關機,如果輸入:
      我是豬,就取消關機!\n請輸入:>");
      scanf("%s", input);
      if(0 == strcmp(input, "我是豬"))
      {
      system("shutdown -a");
      }
      else
      {
      goto again;
      }
      return 0; }

      ?? ?? 不使用goto,使用循環?? ?? :

      include <stdio.h>

      include <stdlib.h>

      int main()
      {
      char input[10] = {0};
      system("shutdown -s -t 60");
      while(1)
      {
      printf("電腦將在1分鐘內關機,如果輸入:
      我是豬,就取消關機!\n請輸入:>");
      scanf("%s", input);
      if(0 == strcmp(input, "我是豬"))
      {
      system("shutdown -a");
      break;
      }
      }
      return 0; }

      主站蜘蛛池模板: 亚洲日本韩国欧美云霸高清| 色www视频永久免费| 成人亚洲精品一区二区三区| 国产成人亚洲综合图区| 亚洲乱码国产乱码精品精| 国产美女高潮流白浆视频| 理论片午午伦夜理片久久| 国产av中文字幕精品| 国产一区二区在线有码| 亚洲人成网站77777在线观看| 亚洲午夜成人精品电影在线观看| 亚洲中少妇久久中文字幕| 成人午夜在线播放| 91偷自国产一区二区三区| 威信县| 久久这里只有精品好国产| 国内不卡一区二区三区| 日本大片免A费观看视频三区| 国产美女直播亚洲一区色| 青青草一区在线观看视频| 国产亚洲精品AA片在线播放天| 人人妻人人妻人人片av| 亚洲日本va午夜中文字幕久久| 亚洲精品美女一区二区| 麟游县| 亚洲色成人网站www永久四虎| 国产美女自慰在线观看| 高清无码爆乳潮喷在线观看| 亚洲精品国产无套在线观| 无码人妻av免费一区二区三区| 亚洲爆乳成av人在线视菜奈实| 亚洲午夜爱爱香蕉片| 满洲里市| 老熟女重囗味hdxx69| 露脸国产精品自产拍在线观看| 婷婷综合缴情亚洲| 玩弄放荡人妻少妇系列| 日本特黄特黄刺激大片| 少妇无码av无码专区| 中文字幕无码免费久久| 国产在线98福利播放视频|