作者:余小小
日期:2021-10-02
判断概念
-
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
-
0 == false
-
null == false
-
判断是分支结构
uml图:菱形代表条件,矩形代表 代码,黑点代表起始位置
判断语句
C 语言提供了以下类型的判断语句。点击链接查看每个语句的细节。
语句 | 描述 |
---|---|
一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 | |
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 | |
您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 | |
一个 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的意思
暂无评论内容