当前位置:首页 » 《资源分享》 » 正文

【C语言初阶】分支语句—— if语句

13 人参与  2024年10月17日 10:41  分类 : 《资源分享》  评论

点击全文阅读


【C语言初阶】分支语句 —— if语句

文章目录

【C语言初阶】分支语句 —— if语句二、分支语句(选择结构)1 选择 - 流程图2 `if` 语句2.1 语法结构2.2 不同结构的 `if` 语句2.2.1 `if` 单分支结构2.2.2 `if` 多分支结构2.2.3 `if` 多条件结构 2.3 说明2.4 悬空 `else`2.4.1 示例12.4.2 示例2 2.5 `if` 不同书写形式的对比2.5.1 示例12.5.2 示例2 2.6 `if` 语句练习2.6.1 练习12.6.2 练习2 总结:

二、分支语句(选择结构)

每个人的一生中都会面临无数的选择,而一旦确定了某个选择,那便不断地努力前行。

本章学习的 if 语句和 switch 语句,都是用来实现程序流程的选择性分支的,因此统称为选择语句(selection statement)

1 选择 - 流程图

选择结构


2 if 语句

if 语句被称为分支语句选择语句,因为它相当于一个交叉点,程序要在两条分支中选择一条执行。

2.1 语法结构

//if单分支结构if(表达式)语句;//if多分支结构if(表达式)语句1;else语句2;//if多条件结构if(表达式1)语句1;else if(表达式2)语句2;else语句3;

说明

1 if(表达式) 语句;

  表达式求值判断一次,为真时执行语句,为假时什么也不执行。

2 if(表达式) 语句1; else 语句2;

  表达式求值判断一次,为真时执行语句1,为假时执行语句2。

3 if(表达式1) 语句1; else if(表达式2) 语句2; else 语句3;

  先对表达式1进行判断,为真时执行语句2,为假时则对表达式2进行判断;如果表达式2为真,则执行语句2,如果表达式2为假,则执行语句3。

  如果后续还有 else if(表达式) 的结构,则依然是先判断表达式,然后执行相应的语句或者继续进行后续表达式的判断

注意1else 后不跟表达式,只有 if 或者 else if 之后才能跟表达式
注意2:语句可以是一条简单语句复合语句。表达式为真说明其是非零值。


2.2 不同结构的 if 语句

2.2.1 if 单分支结构

单分支-流程图

if单分支

示例

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){//if单分支结构int age = 0;scanf("%d", &age);if (age < 18){printf("未成年!\n");}return 0;}


2.2.2 if 多分支结构

多分支-流程图

if多分支

示例

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){//if多分支结构int age = 0;scanf("%d", &age);if (age < 18){printf("未成年!\n");}else{printf("已成年!\n");}return 0;}


2.2.3 if 多条件结构

多分支-流程图

if多条件

示例

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){//if多条件结构int age = 0;scanf("%d", &age);if (age >= 0 && age < 18){printf("未成年\n");}else if (age >= 18 && age < 30){printf("青年\n");}else if (age >= 30 && age < 50){printf("中年\n");}else if (age >= 50 && age < 80){printf("老年\n");}else if (age >= 80){printf("老寿星\n");}return 0;}


2.3 说明

如果表达式的结果为真,则执行语句,否则就执行 if 语句后面的其他语句。

在C语言中,0表示假,非0表示真

if 或者 else 后面只能跟随一条语句,当需要执行多条语句时,需要用 {} 大括号将它们括起来,形成复合语句。

if-else 语句可以嵌套使用一个 if 语句内部可以包含其他 if 语句


2.4 悬空 else

每个 else 只与和它最近的 if 相匹配,除非最近的 if 被花括号括起来。

2.4.1 示例1

代码示例

#include<stdio.h>int main(){//悬空elseint a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");//什么也不打印return 0;}

解释说明:

1 当程序执行到第一个 if 语句的位置时,进行表达式 a == 1 的求值和判断。

  判断的结果为假,则不执行 if 内的语句,也就是不再对第二个 if 语句的条件表达式进行求值和判断。

​  本程序中的 else 与第二个 if 相匹配,而不是第一个 if ,所以当第一个 if 的条件判断为假的时候,程序流会直接跳过第二个 ifelse ,继续执行后续其他代码。

2 也就是说,else 只与和它最近的 if 相匹配,而不是和所谓的与之对齐的 if 匹配。


2.4.2 示例2

调整代码

#include<stdio.h>int main(){//适当使用 {} 可以使代码变得更加易读//良好的代码书写风格很重要int a = 0;int b = 2;if (a == 1){if (b == 2){printf("hehe\n");}}else{printf("haha\n");//打印haha}return 0;}

解释说明:

1 根据实际需求,可以ifelse 之后添加大括号 {} ,使得程序变得更易读。


2.5 if 不同书写形式的对比

2.5.1 示例1
//代码1if (condition){return x;}return y;//代码2if (condition){return x;}else{return y;}

解释说明:

1 结论两个代码执行效果相同,但代码2更加清楚易懂。

  代码1:当 if 语句条件表达式判断为真时,执行 return x; 语句;表达式判断为假时,执行 if 语句之后的其他语句,也就是执行 return y; 。(一条 if 语句、一条 return 语句)

  代码2:当 if 语句条件表达式判断为真时,执行 return x; 语句;表达式判断为假时,执行 return y; 语句。(一条 if 语句)


2.5.2 示例2
//代码1int num = 1;if (num == 5){printf("hehe\n");}//代码2int num = 1;if (5 == num){printf("hehe\n");}

解释说明:

1 结论两个代码执行效果相同,但代码2更加清楚易懂。

  代码1:在书写时,可能会出现 if (num = 5) 这样的情况,不小心漏掉了一个等号,将条件表达式由判断是否相等变成了判断一个赋值语句

  代码2:在书写时,如果出现 if (5 = num) 时,程序会报错,这样就很好的避免将条件语句中的判断相等写成赋值语句

2 赋值表达式求值

  对赋值语句判断的结果就是赋值运算符右操作数的结果,也就是将赋的值作为赋值表达式判断的结果


2.6 if 语句练习

2.6.1 练习1

判断一个数是否为奇数

代码示例

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){//判断一个数是否是奇数int num = 0;scanf("%d", &num);//方法一//判断num%2的结果是否为1,为1表示是奇数,为0表示是偶数if (1 == num % 2)//%运算符的优先级高于==运算符{printf("%d是奇数.\n", num);}else{printf("%d是偶数.\n", num);}//方法二//判断num%2的结果是不是不等于0,如果不等于0则是奇数,为0则是偶数if (num % 2 != 0)//%运算符的优先级高于!=运算符{printf("%d是奇数.\n", num);}else{printf("%d是偶数.\n", num);}return 0;}

解释说明:

1 判断奇偶时,将目标数模2取余,结果为0表示偶数,结果为1表示奇数


2.6.2 练习2

输出1~100之间的奇数

代码示例

#include<stdio.h>int main(){//判断1~100之间的奇数//方法一//从1开始判断到100,是奇数就打印输出int i = 0;for (i = 1; i <= 100; i++)//循环了100次{if (i % 2 == 1)//判断了100次{printf("%d是奇数.\n", i);//执行了50次}}//方法二 //i每次加2,满足1~100中奇数的等差数列形式,公差为2for (i = 1; i < 100; i += 1)//循环了50次{printf("%d是奇数.\n", i);//执行了50次}return 0;}

解释说明:

1 写法一是判断1~100中的所有数,如果是奇数则打印。

2 写法二是直接打印1~100中的所有奇数,且不用作判断。


总结:

  本节简单介绍了分支语句中的 if 语句,给出了三种形式的 if 语句;同时又讲解了什么是悬空 elseif 不同书写形式的对比。


感谢您的阅读!如有任何错误,欢迎您的批评指正!


点击全文阅读


本文链接:http://zhangshiyu.com/post/172978.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1