【新手C语言】2.0 判断以及if&else的使用,case多路分支

【新手C语言】2.判断语句if以及循环语句

【基本的if语句】
基本的if语句格式如下:
if( 条件 ){
执行的语句
}

if(a>10){
   a++ ; 
}  

其中"条件"指的是各种判断语句,比如说a>b ,a = c 等等。在C语言中,判断的结果不是布尔运算(true和false)。两个值的关系符合关系运算符时,输出1,否则输出0。
所有关系运算符的优先级低于算术运算符,但是高于赋值运算符。
运算比较是一步一步来的,比如下文6>5>4,会运行6>5得到1,然后1>4得到0
你可以在自己的编辑器中试试这个代码,可以更好的体会。
printf("5 %d \n",6>5>4); //6>5>4,会运行6>5得到1,然后1>4得到0

判断符合
== 相等 !=不相等 > 大于 >= 大于或等于 <小于 <= 小于或等于

【else】
else表达的是不符合if条件的所有情况,比如说if的条件是a<1,那么else就代表着a>=1的内容
好好地利用else以及if和else在判断上的关系,可以省去很多杂糅的判断,这个再之后复杂的判断增加了可以简化逻辑
else的使用如下:

if(条件A){
    语句A;
}else{
    语句B;
}

else是紧跟在if后面的,一个else对应一个if
在上面的语句中,如果条件A的结果为true/为1/为正确,则执行语句。否则,在其他情况下一律执行语句B
如果if else后跟的语句仅有一行,那么可以省去中括号

if(条件A)  语句A;
else       语句B;

不是很推荐这样写,加中括号以后条理会清晰很多,更方便我们理清逻辑

【else if】
如果觉得在进入else情况之后还需要判断,则用else if ,也是级联的if&else

if(条件A){
    语句A;
}else if(条件B){
    语句B;
}

此时,在不满足条件A且满足条件B时,才会执行语句B

用这玩意写个分段函数!

#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 ;
 } 

顺带,判断语句是可以嵌套使用的,由此组成多层判断

#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的匹配	
		
	//改了这么多次我只想说:注意{}的对应,fuck
	
	//另外也可以用简要版的ifelse写,简洁但是有风险 
	printf("The max is %d \n",max);
	; return 0 ;
}

【case:多路分支判断】
在这里,我把case语句也分到了“判断”这一类别里面。
有的时候我们会遇到多个情况(就像上文的分段函数),使用多个else if 显然太过于杂糅了。此时就可以使用case语句
case语句的格式如下

swtich(参数A){

case <值A>:
        执行语句;
        break ;

case <值B>:
        执行语句;
        break ;
case <值C>:
        执行语句;
        break ;
......

default:
      默认情况执行语句;
}

在swtich后,我们将决定一个参数A,并在case中根据参数A的数值来进行操作(A=1时...A=2时...),并且有一个default来处理默认情况(A的数值都不满足上述case时)
case只是一个路标,并不会自动停止。甚至会运行到下一条case里面去执行句子(按排序的顺序,这个动作会直到遇到一个break或者到达switch结束,才会停止下来。 在一些语言或者一些编辑器中,没有break甚至会给你一个报错
在这里,我们暂且认为参数A是一个int

方便理解,可以看看下面这个实例

#include <stdio.h>
int main (void){
	int type;
	scanf("%d",&type);
	 
	switch( type ){
		//根据switch(控制表达式子),控制表达式只能是整数型的结果! 
		//括号中的值判定接下来的语句,括号中可以是变量,可以是式子。都不符合就输出default。 
		case 1: 
			printf("这是case 1");
			break ; 
		/*
		case 常量 :           (常量可以是常数,也可以是只含常数运算的表达式) 
		    语句......(一般以break结尾) 
		    
		    都是短句子的话好像 case xx: xx xxxx xxx ;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 ;
}
posted @ 2021-04-20 17:05  RetenQ  阅读(545)  评论(0编辑  收藏  举报