#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