【新手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时,只觉得我之前的代码简直是乱七八糟

posted @ 2021-09-16 19:42  RetenQ  阅读(426)  评论(0编辑  收藏  举报