分支与循环语句(1)——if语句

c语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构和循环结构。我们可以通过if、switch实现分支结构,也可以通过for、while、do while实现循环结构,本文将着重介绍

一、if语句

1.1、if语句的格式如下:

如果if里面的表达式为真,则以printf为代表的语句执行,如果printf为假,则语句不执行,例如判断奇偶数的经典例子表达式中:

if后的表达式表示,用赋予scanf的数字除以2,如果商为一,表示真,则打印“为偶数”,如果不为一,表示假,则不执行语句。

1.2、if ...else...语句

如果一个数不是偶数,那么该数就要是奇数,那么表达不是偶数就是奇数,可以用if...else...语句

如果后面的表达式为真,则执行语句1,如果表达式为假,则执行语句2.

例如我要判断输入的数字是为偶数还是奇数

该语句中,输入5,则if后面的语句为假,也就是if后面的语句不成立,则执行else,所以输出“5为奇数”。

如果打印成绩是否合格

当输入的成绩>60时,if后面的语句成立,if为真,成绩合格,但是当输入的成绩<60时,if后面的语句不成立,执行else语句,则成绩不合格。

但是这样简单的if...else...语句是有问题的,当我们输入大于100或者小于0的数字,虽然实际情况中不会出现这样的结果,但是if...else...语句仍然执行。

那么这个时候就可以使用if...else...的嵌套


1.3、if...else...的嵌套

所谓嵌套,指的是 if 或者 else 中的语句块还可以是 if else 判断语句,必要时可以使用多个

其实所谓“嵌套”就是将下一个if...else...语句放入上一个if...else...语句当中,这样就构成了嵌套,我们可以参考下一个例题:

       成绩小于60,大于0时输出成绩不合格;小于70,大于60时输出合格;

       成绩小于80,大于70时输出一般;小于90,大于80时输出优秀;

       成绩小于100,大于90时输出泰裤辣

        

如图,我们将后一个if...else...放入前一个里面即可构成嵌套,上图意为,当输入85时,第一个if后的语句(score >= 0 && score < 60)为假,则执行第一个else,而else里面又是一个if,则执行第二个if(score < 70)后面的语句,但是该语句又为假,所以执行第二个else,同样的,第二个else里面又是一个嵌套语句,所以执行第三个if(score < 80),那么第三个语句又为假,那么继续执行下一个语句,第四个if(score < 90)后面的语句,但是这次if后面的语句为真,85<90,所以打印第四个if后面的printf,所以输出“成绩一般”。

我们也可以换种写法更加方便理解:


1.5、这里还需要注意的是,如果else悬空,else总是和最近的if相匹配

在上图中vs什么都没有输出,因为在第一个if后面的语句(a == 1),但是该语句为假,所以不在执行后面的第二个if(b == 4),那么既然不执行第二个if,是否要执行else呢?但是编译器并没有输出,所以没有执行第二个else。为什么会这样呢?正如前文所说,else只与最近的if相匹配,所以else的语句也不执行

那么如果我就是想让else和第一个if匹配,继而让else执行呢?可以采用以下的方式解决:

这样就很明显,将if用括号括起来,else就和第一个if相匹配


  • 39
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值