7. C 语言 -- 分支结构: if 语句

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dugudaibo/article/details/82821362

本博客主要内容为 “小甲鱼” 视频课程《带你学C带你飞》【第一季】 学习笔记,文章的主题内容均来自该课程,在这里仅作学习交流。在文章中可能出现一些错误或者不准确的地方,如发现请积极指出,十分感谢。
也欢迎大家一起讨论交流,如果你觉得这篇文章对你有所帮助,记得评论、点赞哦 ~(。・∀・)ノ゙

  在上一篇博客中介绍了关系运算符和条件运算符,实际上这两个运算符在很多时候会结合到分支结构中一起使用,那什么是分支结构呢?

  如下图所示,左侧是顺序结构,右侧是分支结构

图1 顺序结构与分支结构[1]

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。 [ 2 ] ^{[2]}

  下面将主要介绍 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

欢迎大家关注我的知乎号(左侧)和经常投稿的微信公众号(右侧)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dugudaibo/article/details/82821362