🧐什么是语句?
对于语句我的理解就是:对于计算机的指令
C语言的语句共有五类:
- 空语句
- 表达式语句
- 控制语句
- 函数调用语句
- 复合语句
而今天咱们要聊的就是控制语句,接着往下看👇
🔎 控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言共有9种控制语句。
分为以下三类:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:for语句、while语句、do while语句;
- 转向语句:break语句、continue语句、return语句、go to语句;
博主的上一篇博客介绍了分支语句,这篇重点讲解循环执行语句且穿插着转向语句
🚀 while循环
取得成功不仅需要选择,同样需要重复,我们选择了编程,同样得大量复的练习 而C语言中就提供了分支语句去选择,循环执行语句去重复
✈️while的语法结构
while(表达式)//条件判断 { 循环语句; }
来让我我们试试这个新玩意👇
#include<stdio.h> int main() { int sum = 0; while(sum < 10) { printf("阿辉不一般\n"); sum++; } return 0; }
❤️简单讲解一下,先判断sum<10的真假,显然sum初始化为0,sum<10为真进入循环打印阿辉不一般,同时sum++,循环10次后sum=10跳出循环,屏幕上也打印了10个阿辉不一般
✈️构成循环的条件
构成循环,一般需要三个条件:
1.循环变量初始化
2.循环的条件判断
3.循环变量的调整
这三个条件影响了循环的进行,一个不慎可能会造成死循环或者没能达到预期效果
✈️while中的break和continue
❤️咱直接上代码
#include<stdio.h> int main() { int sum = 0; while(sum < 10) { sum++; if(sum == 5) { break; } printf("%d ",sum) } }
屏幕上仅仅打印了1 2 3 4,这是因为当sum为5的时候执行break语句
而break语句会直接跳出循环终止循环
👇咱们再看看continue
#include<stdio.h> int main() { int sum = 0; while(sum < 10) { sum++; if(sum == 5) { continue; } printf("%d ",sum); } }
与break不同的是,continue打印了1 2 3 4 6 7 8 9 10跳过了5没打印
continue会跳过本次循环continue后面的语句,直接进行下一次循环的判断
🚀do while循环
✈️do while的语法结构
do { 循环体; }while(表达式);
👇流程图奉上
int main() { int i = 10; do { printf("%d\n", i); } while (i < 10); return 0; }
do while循环与while循环堪称一样,唯一的区别就在于不论如何do while的循环体都会执行一遍
break和continue在do while中和while的用法都是一样的
🚀for循环
C语言中已经有while循环,为什么还要for循环呢?下面让我们一探究竟👇
✈️for循环的语法结构
for(表达式1;表达式2;表达式3;) { 循环语句; }
上述的表达式分别是什么意思呢
- 表达式1:初始化部分,给循环变量的初始化
- 表达式2:条件判断部分,判断循环的终止
- 表达式3:调整部分,调整循环变量
流程图展示👇
下面我们直接上手实操一波👊
#include<stdio.h> int main() { int i = 0; for (i = 0; i < 10; i++) { printf("%d ", i); } return 0; }
上述代码
i
先初始化为零,i<10
为真进入循环打印i
,然后i++
直到
i
=10停止循环,屏幕上打印 0 1 2 3 4 5 6 7 8 9与while相比for循环中
初始化部分、条件判断部分
和调整部分
更加集中,用起来更加便利,同时for循环的使用频率也是更高的但也不是说while就比for差,for的模式固定,while则更加自由,两者各有千秋
✈️for循环中的break和continue
for循环中同样可以使用break和continue,他们的意义和在while循环中是一样的
#include<stdio.h> int main() { int i = 0; for (i = 0; i < 10; i++) { if (i == 5) { break; } printf("%d ", i); } return 0; }
#include<stdio.h> int main() { int i = 0; for (i = 0; i < 10; i++) { if (i == 5) { continue; } printf("%d ", i); } return 0; }
✈️对于for循环的一些见解
- for循环的循环体内不要轻易改变循环变量,很容易造成死循环
- for循环的初始化部分、条件判断部分以及调整部分都是可以省略的,也就是for循环可以这么写
for( ; ; )
,初学者不建议省略这些部分,容易出错
例:
#include<stdio.h> int main() { int i = 0; int j = 0; for (; i < 5; i++) { for (; j < 5; j++) { printf("5 "); } } return 0; }
上面这个代码太典了,我一开始以为会打印25个
5
但是仅仅打印了5个5
因为当
i
为0时内层循环循环一遍j
的值变成了5
,而内循环没有初始化j
,内循环(也就是第二层循环)就进不去了