1.if--else语句
首先我们必须明白if--else语句的的一般形式
if(表达式)
语句组;(语句1;语句2;语句3)
else
语句组;(语句1;语句2;语句3)
特别需要注意的是在if和else的后面不能加封号
在有写教材包括书籍中肯将if--else语句的一般形式写为:
if(表达式)
语句1;
else
语句2;
大家一定要记清楚if--else语句的一般形式。
if--else语句的执行流程:先求解表达式,如果表达式的值为“真”,就执行语句1;否则(即表达式的值为“假”),就执行语句2。语句1和语句2总要执行一个,但是不会都执行。
接下来给大家举一个简单的if--else语句的例子
计算分段函数(判断x是否不为0)如果x不等于0则输出y=1/x,如果x=0则输出y=0。输入x,计算并输出下列分段函数f(x)的值(保值1位小数)。试编写相应程序。
根据程序运行的结果我们可以看出此程序是完全符合题目条件的,而下面这张图可以清楚的为大家展示出这道题目的思路。
首先我们知道这是一道分段函数题目,紧接着我们判断出需要使用if--else语句来完成。
第一步定义两个函数变量,这里定义用的是float类型(注意自变量不一定为整形,大家一定要考虑好变量的类型)
第二步通过scanf输入函数的自变量x。
第三步使用if--else语句进行判断,在括号中填写判断条件,此处条件为x是否为0(if和else后不能加封号)。
第四步分别在if和else后加入分段函数的函数表达式,并且在每一个语句后加入封号。
最后利用printf函数对函数值进行输出。
到此这个程序就已经编写完成,接下来我们可以对程序进行编译,运行以此来验证该程序是否满足题目要求,如果有问题可以在此基础上进行修改。
2.嵌套if
在if--else语句中,else可以与另一个if语句连用,构成多重判断。
比如:要输入一个整数,判断输入的整数是0,还是正数或者负数。请看如下代码:
上图中的代码就是嵌套在前面的else子句中的,构成了嵌套的if语句。
再比如:
输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非奇数。
上面的代码张掖是嵌套在if语句中的,构成了嵌套的if语句。
以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。
下面有一道练习题大家可以自己试一下,代码放在题目后面。
练习:
1.输入一个人的年龄
2.如果年龄<18岁,打印“少年”
3.如果年龄在18岁至44岁打印“青年”
4.如果年龄在45岁至59岁打印“中老年”
5.如果年龄在60岁至打印“老年”
6.如果90岁以上打印“老寿星”
参考代码:
以上代码带上大括号是为了更容易看明白。
3.悬空else问题
如果有多个if和else,可以记住这样一条规则,即:else总是跟最接近的if匹配。
我们先从一组代码说起
以上程序的运行结果是什么都没有。
其实对于许多初学者来说,会直接判断a为0,然后直接执行else语句,打印hello,但是当我们去运行这给程序时会发现什么都没有。
这其实就是悬空else问题,如果一个程序有好几个if和else,并且没有大括号,那我们就需要自己判断那个if和else为一组。这里我们只需一部记住一条规则:else总是跟最接近的if匹配。
上面这一段代码是将else和第一个if对齐,会误导我们以为它们两个是匹配的,按照if--else语句的执行流程,当if语句不成立时就执行else语句,实际上else是和第二个if匹配的,也就是说第二个if和else是嵌套在第一个if中的,如果第一个if不成立,那么后面的语句自然不会执行,最终什么也不打印。
接下来我们将这段代码进行修改方便我们理解
如果我们想让第一个if和else匹配我们可以进一步修改
其实只要带上大括号,代码的逻辑就会变得更加清晰,所以大家以后在写代码的时候注意括号的使用,让代码的可读性更高。