C++學習(十)(C語言部分)之 分支語句


 #include<stdio.h> // std 標准  io ---->  input  output  輸入 輸出  printf scanf getchar ......

 #include<stdlib.h> // system libary庫

 

//預處理命令 可以當做注釋用
#if 0 //#if 條件 如果調件滿足 后面的這段程序會被編譯

#elif 1 //else if條件2

#else // else

#endif // 作為結束的標記

 

 

 

 

一、c語言中有三大流程
1、順序結構 從上往下 依次執行 最基礎的結構

例如:

將下列語句 依次執行 輸出

 

2、循環結構  就是一個一直執行的過程

比如:一直吃  就是循環
3、分支結構  就是一個帶有選擇性的 

比如:“你今天吃飯還是不吃飯?” 根據當前情況進行選擇   吃或者不吃就是分支

 

二、分支

分支
1、if else
  > < = !=
  ! && ||
  數字也可以作為條件

  格式:
  if(餓){吃;}//只有if沒有else

  if(條件)(語句1)//有if和else
  else(語句2)

    嵌套 if的()或者else的()里面還有if--->嵌套

  if(條件1){語句2} //多層分支
  else if(條件2){語句2}//可以有多個else if
  ......
  else if(條件n){語句n}
  else {語句}
  先判斷if if成立執行語句1 直接跳出
  if不成立 判斷else if 語句2 條件2成立執行語句2

注意點:
        1、有if不一定有else 但是有else必定有if

        2、if 語句后面不要加分號

             如果if滿足不執行任何語句可以加分號 

        3、關於{}的省略

             不加{} if只匹配離他最近的一句

             如果{}只有一句 那么可以省略{}

             剛剛開始寫 不熟練就不要省略了

        4、條件的寫法

              if(20==x) 涉及到 == 的時候 常量放左邊 避免少寫=

 



最簡單的例子:

如上圖的程序 因為x=1,不滿足x>2的條件 所以直接執行后面的語句

如果改為x=3則會執行 括號里面的語句

 

有else的語句://else是可以省略的

所以 條件不同時 就會執行不同的語句

條件嵌套例子;

當前語句會執行49行這一句

 

改變一下條件 男士改為女士

當前會執行第53行的語句

 

多層嵌套;

 

在改代碼中 一個 = 表示賦值   ==  表示等於

根據設置斷點 逐語句調試 最終執行的是第85行代碼 然后跳出循環

 

用數字做判斷條件 0為假 其他數字為真

因為條件為假 所以不執行里面的語句

 

 

如果在if后面加分號

他就會直接執行后面的語句

所以 if(o);   就等價於  if(0){}

有關{}的省略

 

省略{}后

 

說明 if 只控制第一句 

2、switch

用於枚舉出所有的選項

   格式; 

switch(變量)

{括號不能省略

default: 語句;break;//可以放在其他位置 也可以省略

case 常量1;break;

case 常量2;break;

...

}

//比較case后面的常量的值 和變量的值 相等就執行
都不相等 就執行default

所有可能的選項都能列舉出來就用switch (可以和枚舉搭配)
所有分支全部可以用if,但是某些情況下switch更加簡潔

注意 1:default可以放任何地方 也可以不寫 但是一個switch里面只能有一個default
        2:case后面的值不能相同 case后面只能是整型和單個字符 不可以是 小數和字符串(中文算字符串)
        3:break case和default后面
          先匹配對應的case 或者default 然后一直往后執行 直到遇到break結束

 

例如:

 

 當我們刪除后面的break時

之所以會輸出這樣的結果是因為 當代碼week=5 匹配到第138行時  開始執行 但是因為138行的break沒有的 所以不會停下來 繼續往后面執行 知道遇到break時調出循環

所以會打印出兩個結果

 

三目 也可以作為分支

?:

if(條件){語句1;}

else{語句2;}

 

條件?語句1:語句2  // 稍微簡單點

x=3>4?3:4;

等價於

if(3>4){x=3;}

else{x=4;}

 

同一個問題 兩種處理方式   上面的是if else語句  下面的是三目運算

 

 

 調試代碼如下:

  1 /*
  2 1、順序結構  從上往下 依次執行
  3 2、循環結構  一直吃
  4 3、分支結構  吃或者不吃
  5 
  6 
  7 分支
  8   1、if else
  9   > < = !=
 10   ! && ||
 11   數字也可以作為條件
 12 
 13   格式:
 14   if(餓){吃;}//只有if沒有else
 15   
 16   if(條件)(語句1)//有if和else
 17   else(語句2)
 18 
 19   嵌套 if的()或者else的()里面還有if--->嵌套
 20 
 21   if(條件1){語句2} //多層分支
 22   else if(條件2){語句2}//可以有多個else if
 23   ......
 24   else if(條件n){語句n}
 25   else {語句}
 26   先判斷if if成立執行語句1 直接跳出
 27   if不成立 判斷else if 語句2  條件2成立執行語句2
 28 
 29 注意點
 30   1、有if不一定有else 但是有else必定有if
 31   2、if 語句后面不要加分號
 32     如果if滿足不執行任何語句可以加分號 
 33   3、關於{}的省略
 34 
 35   2、switch
 36   格式;
 37 
 38   switch(變量)
 39   { 括號不能省略
 40   default:語句;break;//可以放在其他位置 也可以省略
 41   case 常量1;break;
 42   case 常量2;break;
 43   ...
 44   }
 45   //比較case后面的常量的值 和變量的值 相等就執行
 46     都不相等 就執行default
 47 
 48 所有可能的選項都能列舉出來就用switch (可以和枚舉搭配)
 49 所有分支全部可以用if,但是某些情況下switch更加簡潔  三目也簡單
 50 
 51 注意 1:default可以放任何地方 也可以不寫 但是一個switch里面只能有一個default
 52     2:case后面的值不能相同 case后面只能是整型和單個字符 不可以是 小數和字符串(中文算字符串)
 53     3:break case和default后面
 54       先匹配對應的case 或者default  然后一直往后執行 直到遇到break結束
 55       
 56  三目 也可以作為分支
 57     ?:
 58       
 59       if(條件){語句1;}
 60       else{語句2;}
 61       條件?語句1:語句2  // 稍微簡單些
 62       x=3>4?3:4;
 63       
 64       等價於
 65 
 66       if(3>4){x=3;}
 67       else{x=4;}
 68 
 69 */
 70 
 71 #include<stdio.h>
 72 int main()
 73 {
 74 
 75 /*
 76     int weight = 103;
 77     char sex = 'W';
 78     if (weight <=100)//條件滿足 執行()中的語句  
 79     {
 80         printf("吃飯\n");//語句1
 81     }
 82     else//條件不滿足 執行else中的語句  else是可以省略的
 83     {
 84         if (sex == 'M')//男士
 85         {
 86             printf("吃飯\n");//體重大於100 並且sex是男士
 87         }
 88         else
 89         {
 90             printf("節食\n");
 91         }
 92         
 93     }
 94 */
 95 
 96 /*
 97     int week = 5;//表示周五
 98     if (week == 1)
 99     {
100         printf("周一\n");
101     }
102     else if(week==2)
103     {
104         printf("周二\n");
105     }
106     else if (week == 3)
107     {
108         printf("周三\n");
109     }
110     else if (week == 4)
111     {
112         printf("周四\n");
113     }
114     else if (week == 5)
115     {
116         printf("周五\n");
117     }
118     else if (week == 6)
119     {
120         printf("周六\n");
121     }
122     else if (week == 7)
123     {
124         printf("周末\n");
125     }
126     else//當上面的條件全部不成立的話就執行該語句
127     {
128         printf("輸入錯誤!!!\n");
129     }
130 */
131 
132 /*
133     if (0)//條件為假
134     //{
135         printf("hello world!\n");//不加{} if只匹配離他最近的一句
136         printf("你好世界!\n");
137     //}
138 */
139 
140 /*
141     int week = 5;
142     switch (week)
143     {
144     default: printf("錯誤\n"); break;
145     case 1: printf("周一\n"); break;
146     case 2: printf("周二\n"); break;
147     case 3: printf("周三\n"); break;
148     case 4: printf("周四\n");// break;
149     case 5: printf("周五\n"); //break;
150     case 6: printf("周六\n"); break;
151     case 7: printf("周末\n"); break;
152     }
153     */
154 
155 /*
156     int x = 1, y = 2, z = 3;//找到最大值
157     int max;
158     if (x > y)
159     {
160         //x比y大
161         if (x > z)
162         {
163             max = x;//x最大
164         }
165         else
166         {
167             max = z;
168         }
169     }
170     else
171     {
172         if (y > z)
173         {
174             max = y;
175         }
176         else
177         {
178             max = z;
179         }
180     }
181     printf("%d\n",max);
182 */
183 
184 /*  三目運算
185     max = x > y ?( x > z ? x : z) :( y > z ? y : z);
186     printf("%d\n", max);
187 
188 */
189 
190     getchar();//接收一個字符 防止閃屏
191     return 0; //函數結束
192 }
193 
194 
195 
196 
197 //預處理命令  可以當做注釋用
198 #if 0 //#if 條件 如果調件滿足 后面的這段程序會被編譯
199 
200 #elif 1 //else if條件2
201 
202 #else // else
203 
204 #endif // 作為結束的標記

 

 

 2018-06-18 13:09:38

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM