目录
C语言是结构化的程序设计语言!
把分支循环看作生活
无非就三种结构
1.顺序结构:从清晨到中午到晚上
2.选择结构:生活每时每刻都有种种选择
3.循环结构:日复一日的干一些事情
什么是语句?
C语句可分为以下五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
分支语句属于控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
分为以下三类:
1.条件判断语句:也叫分支语句:if语句,switch语句
2.循环执行语句:do while 语句,while语句,for语句
3.转向语句:break语句,goto语句,continue语句,return语句
以上九种都属于控制语句
1.分支语句
1.1if语句
if语句的语法结构:
语法结构
1.1 单分支if语句
if(表达式)//表达式的结果为非0为真,为真执行,为0假不执行
语句;
C语言是如何表示真假的?
非0就是真
例如 -1 真
0 假
如果表达式的结果为真,则语句执行。

1.2 双分支if语句:
if(表达式1)//如果为真,执行语句1
语句1;
else//如果为其他执行语句2
语句2;
满足if语句,执行语句,打印成年

不满足if语句,进入else语句,打印未成年

1.3多分支if语句:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
例如:

应该注意的点:
else if(18<=age<=30)可不可以这样写?

如果出现这种情况怎么办?

if 默认控制一条语句,如果条件成立,要执行多条语句,应该使用代码块。
一个大括号相当于一个代码块
这里的 { } 就是一个代码块

1.2 “悬挂”else问题
这是《C陷阱与缺陷》的一个经典例题
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
仔细思考一下
你是不是这么想的?如果不是,那么你很棒哈哈哈哈,当时我也掉入的这个陷阱之中

else不与第一个if匹配,else不是和对齐的if匹配,else与离他最近的if语句匹配。
有人问:if 不是只能控制一条语句吗,也没加大括号,怎么控制多条语句?
if else是一条分支语句,if else合起来是一条语句,是一个整体

所以说代码的书写方式和风格很重要,他人可能会第一眼被误导,我们现在要养成一个好的编码风格和习惯

这样看起来就不会一眼被误导了。
switch语句
2.1switch语句中的case
switch语句是一种分支语句
常常用于多分支的情况。
比如:
输入1,输出星期一
输入2,输出星期二
.................
输入6,输出星期六
输出7,输出星期天
如果使用if会很麻烦。

如果把这些条件写成if形式太复杂,那我们就得有不一样的语法形式,这时就用从switch语句
switch(整型表达式)
{
语句项;
}
//语句项是什么?
//是一些case语句:
//如下:
// case 整型常量表达式:
// 语句;
如果不懂,先看例子:

switch表达式后面结果是几,就从case几进去,case语句和switch后面那个表达式结合起来决定你的入口从哪进去
2.3switch语句中的break
输入3,应该只打印星期3,为什么星期4星期5...他们也被打印出来了?
day的值只是从哪进去,没说从哪里出去,程序一直会向下进行,就会用到break
break//跳出停止
那我们在每个语句后加入break来看看效果,好像是完美的解决了

这时候我们的需求变了: 1. 输入1-5,输出的是“weekday”; 2. 输入6-7,输出“weekend”

这时候代码是不是看起来太冗余一些?很麻烦,还可以简化代码吗?

break语句 的实际效果是把语句列表划分为不同的分支部分。
break 不是语法强制要求的,根据具体情况而定。
2.3default子句
只让输入1到7,但是用户输入其他数字或符号,得不到任何信息,该怎么提示他(她)
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C语言中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
但是 但是!default放在前面一定要加入break!!!不然会继续执行下面case中的语句

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。
switch中我们要注意的事情 !!!!
1.switch后面必须是整型

这时候我们拿一个浮点型是不可以的
2.case后必须整形常量表达式
下面这种情况是不可以的

有同学问:为什么我case后面可以加字符?不是只能是整型常量表达式嘛?
因为字符底层存储的是字符的ASCII码值,也是整型
要养成好习惯
在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现再想增加语句的时候忘记添加产生bug。
感谢大家能看到最后, 如果有不足的地方多多指出,会持续更新的!码字不易,求三连
大家一起加油加油加油!

5万+

被折叠的 条评论
为什么被折叠?



