默认情况下程序运行后,系统会按书写顺序从上至下依次执行程序中的每一行代码。但是这并不能
满足我们所有的开发需求, 为了方便我们控制程序的运行流程,C语言提供3种流程控制结构,不同的流程控制结构可以实现不同的运行流程。这3种流程结构分别是顺序结构、选择结构、循环结构
基本上能然计算机像人一样去干活那么流程控制就是核心,没有流程控制,就没有现在的所有软件可以这么说,简单来说你家电灯的开关都是使用的流程控制
按代码的书写顺序从上至下依次执行 ,这个就不多说了,傻子都知道
对给定的条件进行判断,再根据判断结果来决定执行代码
C语言中提供了两大选择结构, 分别是if和switch
如果表达式为真,执行语句块1,否则不执行
#include <stdio.h>
int main() {
int age=25;
if (age >= 18) { // true
printf("开网卡\n"); //执行
}
printf("买烟\n");
return 0;
}
如果表达式为真, 则执行语句块1, 否则执行语句块2 ,else不能脱离if单独使用
#include <stdio.h>
int main() {
int age=11;
if (age > 18) { //false
printf("开网卡\n");
} else {
printf("喊家长来开\n"); //执行
}
printf("买烟\n");
return 0;
}
#include <stdio.h>
int main() {
int age=11;
if(age>40){ // false
printf("给房卡");
}else if(age>25){
printf("给名片");
}else if(age>18){
printf("给网卡");
}else{
printf("给好人卡"); // 执行
}
printf("买烟\n");
return 0;
}
if中可以继续嵌套if, else中也可以继续嵌套if
任何数值都有真假性
当if else后面只有一条语句时, if else后面的大括号可以省略 (不推荐)
当if else后面的大括号被省略时, else会自动和距离最近的一个if匹配
如果if else省略了大括号, 那么后面不能定义变量
由于 if else if 还是不够简洁,所以switch 就应运而生了,他跟 if else if 互为补充关系。switch 提供了点对点判断方式, 在效率上是比if要快的看下图的匹配模式就知道了
从上图可以看出来,if 需要一层一层的判断,而switch能直接定位到目标只需要一次判断 ,所以在,大量需要判断的单一条件场景多用switch但是switch代替不了if, 因为switch判断条件比较单一
计算"表达式"的值, 逐个与其后的"常量表达式"值相比较,当"表达式"的值与某个"常量表达式"的值相等时, 即执行其后的语句, 然后跳出switch语句 如果"表达式"的值与所有case后的"常量表达式"均不相同时,则执行default后的语句
示例
注意:
case 1:{ 代码 }
if和Switch转换
看上去if和switch都可以实现同样的功能, 那么在企业开发中我们什么时候使用if, 什么时候使用
switch呢?
比如判断用户输入的数据是否大于100
从上面2张图就能看出来if和switch 在什么环境下使用(比较大小和范围使用if, 判断等于使用switch …)
C语言中提供了三大循环结构, 分别是while、dowhile和for 循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段, 直到条件不成立为止。 给定的条件称为"循环条件",反复执行的程序段称为"循环体"
如果通过上图你不理解,比如: 你早上起来吃饭然后上班,晚上下班吃饭,睡觉, 反反复复每天都是这样,这就是循环 ,那么你可能会说我可以休假啊,那么这就设计到循环过程中的条件判断了,所以这就是计算机程序 ,循环在计算机中特别重要,一些自动化脚本和自动化的程序等等都是可以, 脱离人的掌控去自动执行的, 这就是为啥计算机提升了人的效率的主要原因, 如果没有循环所有任务都需要靠手动一个个执行
构成循环结构的几个条件
#include <stdio.h>
int main() {
int count = 0;
while (count < 3) {
printf("发射子弹~哔哔哔哔\n");
count++;
}
printf("循环执行完毕\n");
return 0;
}
while循环注意事项:
while (1);
(不推荐)
do while
和while
其实差不多,就是条件在循环体执行完毕后在判断, 也就是最差循环体也会执行一次
示例
do-while循环执行流程
应用场景(先进行执行,然后在效验)
while和do…while应用场景
do...while
曾一度提议废除,但是他在输入性检查方面还是有点用的
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
printf("发射子弹~哔哔哔哔\n");
}
return 0;
}
for循环执行流程
for循环注意事项和while差不多
for(;;);
C语言中提供了四大跳转语句, 分别是 return、break、continue、goto ,break:
结束当前操作,只适用switch和循环结构
break注意事项:
结束本轮循环,进入下一轮循环 ,只适用循环结构
这是一个不太值得探讨的话题,goto 会破坏结构化程序设计流程,它将使程序层次不清,且不易读,所以慎用 , goto 语句,仅能在本函数内实现跳转,不能实现跨函数跳转。但是他在跳出多重循环的时候效率还是蛮高的
结束当前函数,将结果返回给调用者,前提函数返回类型不是void , 同一个函数里可以有多个return,但是最终只会返回满足条件的, 如果都满足条件了,那么只会返回第一个
语法: return 表达式|值
更具体的细节需要在学到函数的时候才会使用,这里先了解即可
循环结构的循环体中存在其他的循环结构,我们称之为循环嵌套 ,一般来说一重循环解决线性的问题,而二重循环和三重循环就可以解决平面和立体的问题了
注意: