图片[1]yxqzC语言中的判断yxqz小余塘

作者:余小小

日期:2021-10-02

判断概念

  • C 语言把任何非零非空的值假定为 true,把null 假定为 false

  • 0 == false

  • null == false

  • 判断是分支结构

uml图:菱形代表条件,矩形代表 代码,黑点代表起始位置

判断语句

C 语言提供了以下类型的判断语句。点击链接查看每个语句的细节。

语句 描述
if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if…else 语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句 您可以在一个 ifelse if 语句内使用另一个 ifelse if 语句。
switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句 您可以在一个 switch 语句内使用另一个 switch 语句。

? : 运算符(三元运算符)

  • 条件运算符 ? :可以用来替代 if…else 语句

  • 表达式1 ? 表达式2 : 表达式3;
  • 表达式1 :决定了判断结果

    判断结果是:执行表达式2——冒号前面

    判断结果是:执行表达式3——冒号后面

#include<stdio.h>

int main()
{
   int num;

   printf("输入一个数字 : ");
   scanf("%d",&num);

  (num%2==0)?printf("偶数"):printf("奇数");
}

 

if else

条件判断语句

if(逻辑表达式){
​
执行语句;
​
}else{
​
执行语句;
​
}

 

if里的逻辑表达式结果是非零数的时候才会执行if里的语句否则执行else里的语句

实例代码

#include <stdio.h>
int main(){
   int a = 50,b = 90;
if(a==b){
printf("他们两个相等\n");
}else{
printf("他们两个bububu相等\n");
}
return 0;
}

 

如果 简单的逻辑判断,或者说只有一个,判断条件,直接用三元还是比较简单

这里我们需要知道,一个if和一个else配对,他们是就近原则也就说,if会和离他最近的一个else匹配,当然这个else必须是在if的下面哈,不然else if都找不到匹配的对象了。当然,做单独判断的时候也能只用if,但是不能只用else

例如下面代码

#include <stdio.h>
int main(){
   int a = 80;
if(a>60){
printf("a是大于60的\n");
}
   if(a>90){
printf("b是大于90的\n");
}
   if(a>70){
printf("c是大于70的\n");
}
return 0;
}

 

顺序结构运行,从上到下,从左到右,只要满足所有的if里的条件,都会执行if里的语句的。但是这样做就会减低逻辑判断的效率。例如这里的每个if里都会判断是否满足括号里的条件。然后满足第一个和最后一个if,所以会执行第一个和最后一个if里的语句

这里没有用到else语句,如果在末尾条件一个else语句呢?那么会和最近的if匹配,则是和if(a>70)的相匹配具体看一下代码。

#include <stdio.h>
int main(){
   int a = 80;
if(a>60){
printf("a是大于60的\n");
}
   if(a>90){
printf("b是大于90的\n");
}
   if(a>70){
printf("c是大于70的\n");
}
else{
printf("我是和楼上匹配的");
}
return 0;
}

 

else if

这个else if是啥呢?也就是穿插到if else里的一个判断语句,因为有时候我们可能要判断的条件不止一个,例如我们判断老王的成绩。这里就用a变量代表一个科目,直接上代码:

#include <stdio.h>
int main(){
   int a = 80;
if(a>60){
printf("a是大于60的\n");
}else if(a>90){
printf("b是大于90的\n");
}else if(a>70){
printf("c是大于70的\n");
}else{
       printf("都是小于60的");
  }
return 0;
}

 

剖析代码:

程序是从上到下,从左到右进行编译的。在知道了a = 80 后,首先对第一个if进行判断。然后如果满足条件,则直接执行if里的语句,且不会再执行后面else if里的语句了 ;如果不满足,则看后面的else if里的条件,如果满足,则执行里面的语句且不会再判断的else if里的条件是否满足语句。如果不满足,则接着找后面的分支语句(if 或者else 或者else if)

注意:else if 使用的时候之前必须要有if条件判断,不能直接就来else if

也就说 else if 是单独穿插在if else里的一个条件判断分支语句

重点理解:如果上面的文字或者代码理解不了。就看这里,一定要知道。只使用if 判断的时候,会将出现所有if里的条件进行判断。如果使用了else if 的时候,则只满足了第一个条件后,后面的分支语句就不再执行了;

代码一:

#include <stdio.h>
int main(){
   int a = 1;
if (a>0){
a++;
}
if (a>0){
a++;
}
  printf("a的值是:%d\n",a);
return 0;
}
​

 

代码2:

#include <stdio.h>
int main(){
int a = 1;
if (a>0){
a++;
}
else if (a>0){
a++;
}
printf("a的值是:%d\n",a); return 0;}

 

当if{}里的代码只有一条语句的时候,可以省略{}else也是

代码:

#include <stdio.h>
int main(){
int a = -1;
//这里是不满足if里的条件的,则会执行else 里的语句
if (a>0)
printf("我是if里的执行语句");
else
printf("我是else里的执行语句");
return 0;
}

 

if嵌套

if也是能嵌套使用的,也就是说,比如我们要判断一男人是不是高富帅,首先要判断一个男的是不是很高,然后在判断是不是很富有,然后在判断是不是帅,你可能会这样用

直接三个if来判断呗。我们用代码来看看

#include <stdio.h>
int main(){
//0代表高,1代表富,2代表帅
int man=1;
if(man==0){
printf("高\n");
} if(man==1){
printf("富\n");
} if(man==2){
printf("帅\n");
}return 0;
}

 

但是生活中的高富帅不是这样的,而是又高又富又帅。以上的写法是如果是高就是高,如果是富就是富,如果是帅就帅,但是这样判断是比较繁琐的。首先我们的高富帅就是要有个前提。必须先要高。有了高,才能有判断富和帅的资格,不然不够高,连判断富和帅的资格都没有。

所以需要用到if的嵌套

if(man==0){
if(man == 1){
if (man == 2){
printf("高富帅\n");
}
}
}

 

这样就更加的严谨

switch

语法规则:

switch(整型或者枚举型){

case要比较的值:

break;

case要比较的值:break;

default:在上面的case都不满足条件的时候执行,类似于if中的else

}

代码示例:判断输入1到7表示是星期几

#include <stdio.h>
int main(){
int a = 0 ;
printf("请输入您要判断是日期的数字:");
scanf("%d",&a);
switch(a){
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期七\n");
break;

default:
printf("输入信息错误");
break;
}
return 0;
}

 

break:跳出当前循环以当前的switch的意思。如果不好理解,就直接记住,每个case和default的执行语句后面都添加一个break;

文章版权声明 1、本网站名称:小余塘
2、本站永久网址:https://www.yxqz.top/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ2457431511进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容