C语言入门 Day_10 判断的进阶

目录

         前言

1.多重判断

2.代码块

3.条件运算符

3.易错点 

4.思维导图


 前言

if和else能够处理两种不同的情况,如果(if)满足条件,我们就执行这几行代码;否则(else)的话,我们就执行那几行代码。

再现实生活中我们很可能会面临两个以上的选择

比如如周一我就吃麦当当,周四我就吃肯德鸡,如果是其他时间我就随便吃吃。

这里就有三种不同的,相互独立的情况

比较简单直接的做法是写三次if语句,分别判断三种情况

if(today_is_monday){
   printf("今天吃麦当当\n");
}
if(today_is_thursday){
  printf("今天吃肯德鸡\n");
}
if(!today_is_monday && !today_is_thursday){
  printf("今天随便吃吃\n");
}

我们可以看到,最后一个判断是一个很复杂的判断条件,首先是今天不是 (!today_is_monday),然后是今天不是周四(!today_is_thursday),最后还要并且(!today_is_monday && !today_is_thursday),今天既不是周一,也不是周四。

if(!today_is_monday && !today_is_thursday){
   printf("今天随便吃吃\n");
}

所以我们可以用多重判断,来规避这种“剩下的情况”需要写的复杂判断语句,以及简化整个代码的复杂程度!

1.多重判断

1.1

同样是一周的每天吃什么的问题,我们可以写这样的代码

if (today_is_monday){
    printf("今天吃麦当当\n");
} else if(today_is_thursday){
    printf("今天吃肯德基\n");
} else {
    printf("今天随便吃吃\n");
}

1.第一次判断,今天是不是周一

2.如果是的话,打印输出吃麦当当

3.第二次判断,如果今天是周四的话

4.如果是的话,打印输出今天吃肯德鸡

5.第三次判断,余下的所有情况

6.就打印输出今天随便吃吃

1.2

跟之前的代码对比,我们用一个else替代了复杂的判断条件语句,即节省了代码量,又易于阅读,还减少了出错的可能😁。

使用三个if的时候,我们需要对三个if判断的条件都做清晰的界定;

但是使用if-else if-else判断结构的时候,我们只需要对前两个的判断条件做清晰的界定,除此以外的所有情况,都在else里面执行。

判断一个整数是负数还是0还是正数0:

int number_a=5;
if(number_a<0){
  printf("这是一个负数\n");
}
else if(number_a==0){
  printf("这是0\n");
}
else {
  printf("这是一正数\n");
}

1.先做第一次判断number_a < 0:

2.然后填入第二个判断条件的关键字,else和if:

3.填入最后一个判断关键字else:

输出结果

这是一个正数


if else if 、 else 三者是独立互斥的关系,就是说,程序只会执行其中一个分支的代码块。要么执行if的代码块,要么执行else if的代码块,如果前两个条件都不符合,就执行else的代码块。

1.3

判断一个城市的规模,人口小于100是小型城市,人口大于等于100且小于1000是中型城市,人口大于等于1000是大型城市:

int city_population=2100;
if(city_population<100){
   printf("小型城市\n");
} else if(city_population<1000){
   printf("中型城市\n");
} else{
   printf("大型城市\n");
}
 

 输出结果

大型城市


我们注意到和判断语句if,else如影随形的还有一个特殊的符号,花括号{},它把某一分支的代码括了起来,连接在了一块。

同一个花括号里面的代码,都会从上到下顺序执行,这些一个花括号里面的代码还有个名字叫做代码块

2.代码块

2.1

我们来看一下代码块的构成:

bool bo_1=true;
if(bo_1){
   printf("代码块的第一行代码\n");
   printf("代码块的第二行代码\n");
   printf("代码块的第三行代码\n");
}

1.花括号{}

2.一个代码块里面的三行代码

一对花括号“括起来”的代码集合叫做代码块(Code Block),代码块中的代码会按由上至下的顺序执行。

2.2

我们来看看代码的执行顺序,这里会执行if的代码块:

bool bo_1=true;
if(bo_1){
    printf("代码块的第一行代码\n");
    printf("代码块的第二行代码\n");
    printf("代码块的第三行代码\n");

} else {
    printf("代码块的第一行代码\n");
    printf("代码块的第二行代码\n");
    printf("代码块的第三行代码\n");
}

1.第一行执行的代码,定义一个布尔变量

2.第二行执行的代码,进行判断

3.第三行执行的代码,打印输出

4.第四行执行的代码,打印输出

5.第五行执行的代码,打印输出

2.3

这里会执行else的代码块:

bool bo_1 = false;
if (bo_1){
    printf("代码块一的第一行代码\n");
    printf("代码块一的第二行代码\n");
    printf("代码块一的第三行代码\n");
} else {
    printf("代码块二的第一行代码\n");
    printf("代码块二的第二行代码\n");
    printf("代码块二的第三行代码\n");
}

 1.第一行执行的代码,定义变量

2.第二行执行的代码,进行判断

3第三行执行的代码,判断结果为假,执行else分支

4.第四行执行的代码,代码块中的第一行代码

5.第五行执行的代码,代码块中的第二行代码

6.第六行执行的代码,代码块中的第三行代码

2.4

例如:

int her_age = 20;
if(her_age > 18){
    printf("这个女生的年龄超过了18岁\n");
    printf("所以她已经成年了\n");
}
print("结束\n");

输出结果

这个女生的年龄超过了18岁
所以她已经成年了
结束

2.5

定义变量her_age的时候赋值10: 

int her_age=10;
if (her_age > 18){
    printf("这个女生的年龄超过了18岁\n");
    printf("所以她已经成年了\n");
}
print("结束\n");

输出结果 

结束


 前一个代码是执行了if中的代码块,所以输出了三行字;后一个代码是没有执行if中的代码块,所以只输出了一行字。

结合多重判断我们可以看到,每一个判断条件都会有一个自己的判断分支的代码块。

根据判断条件进入不同的代码分支,进而执行不同的代码块

3.条件运算符

3.1

C语言中有个条件运算符可以快速的实现简单的if-else功能,我们来学习一下!

定义两个变量a,b,然后运用条件运算符给b赋值

int a=100;
int b;
b=(a>10)?1:0;

1.定义两个整型变量a和b

2.条件运算符的结构A?B:C

3.条件运算符的判断条件(a > 10)

4.判断条件为真,得到冒号:前面的值

5.判断条件为假,得到冒号:后面的值

如果a大于10这个比较运算的结果为真,b的值就是1,如果为假,b的值就是0。

3.2

例如:

int number_c=100;
int number_result;
int number_result=(int number_c>10)?1:0;

输出结果

1


4.易错点 

eg: 

条件运算符的基本格式:

A ? B : C

当A为真时,结果为B;A为假时,结果为C。

5.思维导图

最后我想说的是:

在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

  • 32
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值