文章目录
前言
在生活中我们也是经常遇到循环,比如说我们重复不断的学习中会拿到一个好offer,而在我们编程程序中也会经常遇到需要反复进行的逻辑代码,而本篇文章主要是以C语言来实现循环语句。但是在循环语句中其大部分情况都是没有语言之分,所以本篇文章适用于绝大部分的编程语言。
-
循环语句中包含:
- while循环
- do-while循环
- for循环
一、while循环
首先我们先来了解while循环的语法结构
while(表达式){
循环语句;
}
//or
while(表达式)
循环语句;
- 表达式:循环条件判断表达式,如果表达式为真则进入循环语句,如果表达式为假则不进入循环语句。表达式可为整型表达式也可为判断表达式,只要可以返回真假,即可作为表达式内容。
- 循环语句:即为所需反复运行的逻辑代码
- 在while中通常循环语句与表达式需要搭配,在循环语句中要是其表达式结果逐渐趋向于假,用于停止循环。但不一定需要循环语句与表达式搭配。
- 在循环语句中可以不使用代码段来包含循环语句,但是所需注意的是循环语句子只匹配它的下一行语句进行循环。
在C语言中:0代表假,非零代表真。
1.举几个while循环的栗子
1.在屏幕上打印1-10的数字
如果我们不使用循环语句,则会非常非常的麻烦,也是被众多网友称为“屎山”代码
#include <stdio.h>
int main() {
prntf("1 ");
prntf("2 ");
prntf("3 ");
prntf("4 ");
prntf("5 ");
prntf("6 ");
prntf("7 ");
prntf("8 ");
prntf("9 ");
prntf("10 ");
return 0;
}
那么我们此时使用while循环,则会非常优雅🥂的在屏幕上打出一到十而且代码量也大大减少。
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
- while的运行逻辑: i = 1 进入while的表达式,此时表达式为判断表达式, i = 1小于等于 10 表达式返回结果为真,所以进入循环语句,在屏幕打印:1, i = i + 1此时 i 就被赋值了为2,与表达式形成了搭配,使得表达式逐渐向实靠 10,停止循环。
在编写代码风格不好的朋友上经常会出现这样的代码
#include <stdio.h>
int main() {
int i = 1;
while(i <= 10)
printf("%d ", i);
i = i + 1;
return 0;
}
- 此代码运行逻辑是死循环打印:1,因为循环语句在没有代码段包含中它只匹配下一行语句来进行循环,所以在此时while只匹配printf语句,之后一直在循环打印没有机会给 i 增值,使得表达式没有与循环语句进行搭配。
- 不才建议在所有循环语句中都加上代码段无论是一行或者多行,这样使得自己的代码逻辑清晰也可以让别人看的容易不会出现逻辑上的错误。
这个时候相信各位也有所疑惑,如果表达式与循环语句不形成搭配,此时这个循环不就变成死循环了吗,那为什么说不一定需要循环语句与表达式搭配呢?🤔🤔
此时就引出了我们循环中的break
2.循环语句中的break
- break的作用:在循环语句中如果遇到break,则直接结束循环不再进行循环语句的运行
- break的作用范围: break只能跳出break所对应的循环不能跳出所有循环!
- 适用于所有循环语句
我们同样引用上面的栗子:在屏幕上打印1-10的数字
我们此时写一个死循环
#include <stdio.h>
int main() {
int i = 1;
while (1) {
printf("%d ", i);
i = i + 1;
if (10 == i) {
break;
}
}
printf("\n全部打印完成啦!!\n");
return 0;
}
- 表达式为 1 在C语言中恒为真,此时我们的while循环就是一个死循环,但是我们加了一个判断条件,当 i 等于10,则break即为结束此次循环,在结束循环后程序打印:全部打印完成啦!!
若此若此时有多层循环
#include <stdio.h>
int main() {
int i = 1;
while (1) {
while (1) {
printf("%d ", i);
i = i + 1;
if (10 == i) {
break;
}
}
printf("嘻嘻\n");
}
printf("\n全部打印完成啦!!\n");
return 0;
}
}
- 那么此时循环打印一至十数字后break结束本层循环,死循环打印:嘻嘻
有一个小明在想(对的经典小明😂):在屏幕上打印1-10的数字,但是此时我觉得数字4不吉利,我不想打印4但是又需要打印其他数字那此时就引用出循环语句的另一个大将✨continue✨😆
3.循环语句中的continue
- continue的作用:continue是用于终止本次循环,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
- 适用于所有循环语句
栗子:在屏幕上打印1-10的数字,不打印数字4
在上面代码进行改进
#include <stdio.h>
int main() {
int i = 1;
while (1) {
if (4 == i) {
i = i + 1;
continue;
}
printf("%d ", i);
i = i + 1;
if (10 == i) {
break;
}
}
printf("\n全部打印完成啦!!\n");
return 0;
}
- 此时当i 等于 4时continue直接跳转回表达式来进行判断是否符合满足条件,不会进行while循环的后续代码的运行,此时我们条件表达式恒等于 1,所以继续进入循环语句中继续循环。
- 需要注意的是当我们 i 等于4时,进入条件判断表达式中必须需要 i 自身增长,以满足跳出循环表达式后结束循环,在continue否则 i 没有变化则一直死循环。
4.while循环的运行逻辑
二、do-while循环
- do while循环与while循环及其一致,只有运行流程不同。
- do-while循环至少执行一次,使用的场景有限,所以不是经常使用。
1.while循环与do-while循环的不同
- do-while循环是先执行一次语句循环再进行条件判断,而while循环是先进行条件判断后再进行语句循环
2.do-while循环的语法结构
do
循环语句;
while(表达式);
3.举个栗子
在屏幕上打印1-10的数字(其实还是这个栗子🤦♂️)
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i=i+1;
}while(i<=10);
return 0;
}
- 此时先进行打印1,赋值后再判断是否符合i小于等于10的条件,符合条件继续进行循环。
代码跟改:i = 100
#include <stdio.h>
int main()
{
int i = 100;
do
{
printf("%d ", i);
i=i+1;
}while(i<=10);
return 0;
}
- 此时屏幕打印:100,并且 i 赋值后再判断条件不符合就不继续进行循环语句。
3.do-while循环的运行逻辑
三、for循环
有小明在想了:哥们已经知道了while循环,但是我们为什么还要一个for循环呢?简直就是脱裤子放屁!🙃
1.for循环与while循环的差别
- 在我们上面的栗子中会发现在while循环中依然存在循环的必须条件(循环语句与表达式需要搭配,在循环语句中要是其表达式结果逐渐趋向于假,用于停止循环),但是由于风格的问题使得条件代码很可能偏离较远,这样查找修改就不够集中和方便。
- 所以就出现了我们的for循环
2.for循环的语法结构
for(表达式1; 表达式2; 表达式3)
循环语句;
- 表达式1:为初始化部分,一般是我们循环的初始条件。它可以是一个变量的赋值,也可以是一串表达式
- 表达式二:是我们循环的条件判断
- 表达式3:一般用于调整部分,改变循环初始条件。它可以是一个变量的赋值,也可以是一串表达式
- for语句的运行顺序: 第一步:运行表达式一;第二步:运行表达式二;第三步:循环语句;第四步:表达式三;第五步:表达式二……循环运行直至循环的条件判断部分为假则结束循环。
继续举我们举到烂的栗子🤷♀️🤷♂️,在屏幕上打印1-10的数字
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
- 此时我们在for循环中就可以清晰明了的看到初始化判断条件、部分和调整部分的代码,就不用像while循环一样如果代码的长的情况,就需要上下滑动来看它的初始化部分、判断部分和调整部分
3.for循环的执行流程图
以上就是本章所有内容。若有勘误请私信不才。万分感激!