3.判斷語句
基礎
我們利用if語句進行判斷
if語句的標准寫法:
if(條件成立){
...
}
判斷條件:
== 相等
!=不相等
> 大於
>= 大於或等於
<小於
<= 小於或等於
注意,在C里面,判斷的結果並不是布爾值(true,false),而是1和0
我們使用else語句,表示除了if條件之外的情況,所做的操作
代碼實例:
#include <stdio.h>
int main()
{
int price=0;
int bill =0;
printf("請輸入金額 ");
scanf("%d",&price);
printf("請輸入票面 ");
scanf("%d",&bill);
if(bill>=price) //注意了,if和else的分號;不寫在小括號后面,因為這不是他們真正“結束”的地方
{
printf("應該找您: %d \n", bill-price);
}
/*當判斷運算符輸出不為0時,會執行大括號內的語句,否則執行else語句。
if+else判斷完之后,之后的語句照常進行 */
else {
printf("你的錢不夠 \n");
}
printf("執行結束");
; return 0 ;
}
if和else有另外一種不用大括號的寫法,本人不是很喜歡也不是很推薦
if(hours>STANDARD)
pay=STANDARD*RATE+(hours-STANDARD)*(RATE*1.5);
else
pay=hours*RATE;
嵌套
不管是if語句還是if-else語句,我們都可以進行嵌套
什么是嵌套呢,見到來說就是一個套一個的套娃
#include <stdio.h>
int main()
{
int a,b,c;
printf("請輸入三個數字") ;
scanf("%d %d %d",&a,&b,&c) ;
int max=0;
//當if的條件滿足或不滿足時,執行的語句可以是一條if或者一套if-else語句,這就是嵌套的if語句
if(a>b) {
if(a>c){
max=a;
}
else {
max=c;
}
}
else{
if(b>c){
max=b;
}
else{
max=c;
}
}
// !!! 簡潔版的else總是和最近的if相匹配!而完整版的(有大括號)是根據大括號的划分的范圍匹配的!
//(可能是廢話)縮進格式並不能暗示else的匹配,起碼C里面是這樣的
//另外也可以用簡要版的ifelse寫,簡潔但是有風險
printf("The max is %d \n",max);
; return 0 ;
}
級聯
if 后的else語句可以直接再接if語句,就是else if語句
#include <stdio.h>
int main(void)
{
int x ;
int f = 0;
scanf("%d",&x);
if(x<0) {
f = -1;
}else if (x==0){
f = 0;
}else if (x>5){
f=2*x;
}else {
f=3*x;
}
printf("%d",f)
;return 0 ;
}
switch case 多路分支
可以使用swtich case 來減少一些if else的工作量
這里的工作量指的是你復制粘貼的工作量
switch( type ){
...
}
type表示的是當前判斷的變量的值
case 常量 : (常量可以是常數,也可以是只含常數運算的表達式)
語句......(一般以break結尾)
break;
利用case來對各種情況進行分析
多說無益,還是直接上代碼更明白
#include <stdio.h>
int main (void){
int type;
scanf("%d",&type);
switch( type ){
//根據switch(控制表達式子),控制表達式只能是整數型的結果!
//括號中的值判定接下來的語句,括號中可以是變量,可以是式子。都不符合就輸出default。
case 1:
printf("這是case 1");
break ;
case 2:
printf("這是case 2");
break ;
case 3:
printf("這是case 3");
//break ; 注意這個break被注釋刪掉了,case=3時會執行3然后到執行case4后停止!
case 4:
printf("這是case 4");
break ;
default:
printf("阿這,這不是case1234");
//最后以default結尾來對應其他情況。
}
;return 0 ;
}
case只是一個路標,並不會自動停止。甚至會運行到下一條case里面去執行句子(按排序的順序)
這個動作會直到遇到一個break或者到達switch結束,才會停止下來。
題外話
我們回過頭來寫這份MD時,只覺得我之前的代碼簡直是亂七八糟
