一、分支语句(选择结构)
什么是选择?
如果你想学技术知识,就多来CSDN看博客。
如果你不想学技术知识,可以去刷抖音鬼畜视频。
这就是选择
1. if语句
❤️分类
单分支:if语句
双分支:if-else语句
多分支:if-else if-else语句
上面这三种情况是走了一条就不会走另外一条路
如果是两个if,会有两次的选择机会
❤️注意
悬空else问题
else是和它离得最近的if匹配的
if的判断地方
如果要判断某一个变量是否等于一个常量值时,把常量值放在前面,避免把“==”写成了“=”
if的控制区域
if语句默认只能控制一条语句,如果要执行多条语句,应该使用代码块
2. switch 语句
❤️格式
switch(整型表达式)
{
语句项; 是一些case语句
}
❤️case、break和default
【case】
case决定入口,可以合并让多个case执行同一条语句
case 整型常量表达式:
语句;
【break】
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。即break的实际效果是把语句列表划分为不同的分支部分
只能跳出本次switch,决定了出口
case后面没有规定一定要加上break,一切从题目要求出发。
【default】
使用场景:不想忽略不匹配所有标签的表达式的值
当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行,所以,每个switch语句中只能出现一条default子句
编程好习惯
在最后一个case语句的后面加上一条break语句(可以避免处在在)
二、循环语句
1. while 语句
同一件事我们要去做很多次,一个分支语句只能实现一次的效果,如果要执行多次,就需要使用循环
❤️格式
while(表达式) 如果表达式的内容为真,就执行下面的语句
循环语句;
❤️while中的break
是永久终止循环,停止后期的所有的循环,直接终止循环
❤️while中的continue
终止本次循环(continue之后的语句不会执行,而是直接跳到while语句的判断部分。进行下一次循环的入口判断)
2. for 语句
❤️格式
for(表达式1,表达式2,表达式3)
循环语句;
表达式1:初始化部分,用来初始化循环变量
表达式2:条件判断部分,用于判断循环什么时候终止
表达式3:调整部分,用于循环条件的调整
❤️for语句的循环控制变量
不可在for循环体内修改循环变量,防止for循环失去控制
建议for语句的循环控制变量的取值拆开“前闭后开”的写法
//前闭后开
int i = 0;
for (i = 0; i < 10; i++)
{
}
//两边都是闭
for (i = 0; i <= 9; i++)
{
}
//C++写法,C99中引入
for (int i = 0; i < 10; i++)
{
}
❤️变种
- 循环中表达式1,2,3是可以省略的。但省了会容易出现问题
int main()
{
for (;;)
{
printf("hh\n");
}
return 0;
}
- 多重循环
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
printf("hh\n");
}
}
return 0;
}
- 使用多余一个变量控制循环
int main()
{
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
{
printf("hh\n");
}
return 0;
}
3.do-while语句
❤️格式
do
{
循环语句;
}while(表达式);
使用场景:循环至少执行一次
❤️do-while中的break
是永久终止循环,停止后期的所有的循环,直接终止循环
❤️do-while中的continue
跳转到表达式部分,进行是否开始下一次循环的判断
4.goto语句
使用场景:终止程序在某些深度的嵌套的结构,break只能跳出一层循环
缺点:会把代码搞得很乱,打乱应有的程序流程
注意:只能在同一个函数内部跳转,不能跨函数跳转
int main()
{
char input[20] = {0};
again:
printf("呵呵\n");
scanf("%s", input);
//判断
if (strcmp(input, "别再呵呵了") == 0)
{
printf("哦\n");
}
else
{
goto again;
}
return 0;
}