【新手C語言】3.判斷語句


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時,只覺得我之前的代碼簡直是亂七八糟


免責聲明!

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



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