本博客主要内容为 “小甲鱼” 视频课程《带你学C带你飞》【第一季】 学习笔记,文章的主题内容均来自该课程,在这里仅作学习交流。在文章中可能出现一些错误或者不准确的地方,如发现请积极指出,十分感谢。
也欢迎大家一起讨论交流,如果你觉得这篇文章对你有所帮助,记得评论、点赞哦 ~(。・∀・)ノ゙
在上一篇博客中介绍了关系运算符和条件运算符,实际上这两个运算符在很多时候会结合到分支结构中一起使用,那什么是分支结构呢?
如下图所示,左侧是顺序结构,右侧是分支结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。
下面将主要介绍 if 语句。
1 if 结构
if 结构如下图所示
这样的结构使得程序在执行的时候,满足条件的时候会执行某一个特定的语句块,但是不满足的时候就不会执行,具体的使用方法如下
…… // 其它语句
if (表达式)
{
…… // 逻辑值为真所执行的语句、程序块
}
…… // 其它语句
下面对这种结构进行进行举例说明
#include <stdio.h>
int main()
{
int a = 20;
if (a >= 18)
{
printf("满足年龄要求!\n");
printf("欢迎光临!\n");
}
return 0;
}
2 if…else 结构
if…else结构如下图所示
这样的结构使得程序在执行的时候,满足条件的时候会执行某一个特定的语句块1,不满足的时候就会执行某一个特定的语句块1,具体的使用方法如下
…… // 其它语句
if (表达式)
{
…… // 逻辑值为真所执行的语句、程序块
}
else
{
…… // 逻辑值为假所执行的语句、程序块
}
…… // 其它语句
下面对这种结构进行进行举例说明
#include <stdio.h>
int main()
{
int i = 20;
if (i >= 18)
{
printf("满足年龄要求!\n");
}
else
{
printf("您的年龄不满足要求!\n");
}
return 0;
}
3 if…else if 结构(嵌套)
if…else if 结构如下图所示
这样的结构使得程序在执行的时候,满足条件 1 的时候会执行某一个特定的语句块1,如果不满足条件 1 要判断是否满足条件 2 ,如果满足条件 2 会执行对应的语句 2 ,如果不满足(此时相当于同时不满足条件 1 和条件 2 ),会接着判断是否满足下面的条件,……一直这样判断下去,直至最后一个条件,如果仍不满足就执行语句 n+1。具体的使用方法如下
…… // 其它语句
if (表达式1)
{
……
}
else if (表达式2)
{
……
}
.
.
.
else if (表达式n)
{
……
}
else
{
……
}
…… // 其它语句
下面对这种结构进行进行举例说明
#include <stdio.h>
int main()
{
int i;
printf("请输入分数:");
scanf("%d", &i);
if (i >= 90)
{
printf("A\n");
}
else if (i >= 80 && i < 90)
{
printf("B\n");
}
else if (i >= 70 && i < 80)
{
printf("C\n");
}
else if (i >= 60 && i < 70)
{
printf("D\n");
}
else
{
printf("E\n");
}
return 0;
}
上面的这段程序对于输入的成绩进行判断,90分及以上:A,80 ~ 90分:B,70 ~ 80分:C,60 ~ 70分:D,低于60分:E。
4 容易犯的错误
如上是 if…else if 结构的使用方法,但是有的时候为了投篮或者没有注意,会写成下面的这种形式
#include <stdio.h>
int main()
{
int i = 0;
if (i == 0){
i = i + 1;
printf("i 的值是:%d\n", i);
}
if (i == 1){
i = i + 2;
printf("i 的值是:%d\n", i);
}
else{
printf("i\n");
}
return 0;
}
执行上面的程序可以得到如下的结果
i 的值是:1
i 的值是:3
造成这个结果的原因在于上面你得程序首先了执行了第一个 if
中的语句,之后再执行第二个 if
中的语句;而不是像之前的 if…else if 中那样,只执行一个条件分支中的语句,所以在使用的时候要尤为注意。
参考文献
[1] 将暮未暮 《Java 分支结构》
[2] 百度百科 《分支结构》
[3] “小甲鱼” 视频课程《带你学C带你飞》【第一季】P11
欢迎大家关注我的知乎号(左侧)和经常投稿的微信公众号(右侧)