【新手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 ;
}