对于刚接触编程的小可爱们,肯定会碰到这三种循环,书上写的有可能会过于专业化,会让我们感觉很难理解,在这里我就用最简洁明了的表达方式帮你理解并且学会使用这三种循环。
对于大佬们,读完你也许会新体会,新发现哟[可爱]。
同时我会在最下面说一说循环的两个小跟班(break和continue)
三种循环语句
for 循环
这种循环应该是用的最多的,也是一种很好理解的循环。
结构(这还是必须要了解的)
for循环的结构如下:
for(初始化表达式 ; 循环控制语句 ; 增值表达式)
{
语句序列
}
大括号内的内容称为循环体(就是循环执行的内容)。
注意:循环体内是可以包含很多条语句的。
书上一般都会这样写,但是会让人感觉很懵逼,那我们就来翻译下[嘻嘻]。
循环其实就是重复的做一件事,在这个同时我们还要规定循环的次数(就是重复做多少遍),我们数数的过程是不是就相当于记录次数了,循环也就是这样。
for(从几开始数 ;数到几结束 ;数增加或减少)
{
我们重复干的事
}
用法(简单粗暴教你会用)
至于使用,最简单的也就是重复输出一句话了。
int n=10; // 规定循环多少次 for(int i=0;i<n;i++) { printf("重复做的事\n"); }
注意这里,我用了个临时变量 i 来控制循环的次数,并且是在括号内定义的,这样的好处很多(比在for外面定义好),就不细说了。
同时增值表达式不是只能写i++的(i–,i += 2,i * =3,…)这些都是可以写的,根据自己的玩法写[哈哈哈]
我们先来细说循环执行的过程:
1.首先就是执行 int i = 0 (这句话只会在刚开始循环时执行一遍,后面就不会执行了)
2.然后执行循环控制语句(i
如果循环控制语句为真(此时 i
如果循环控制语句为假(此时 i>=n),结束本次循环
3.执行增值表达式(i++)
4.继续从2.开始往下执行(直到循环控制语句为假,退出循环)
运行结果:(当然就是输出10遍“重复做的事”,不信你数[自豪])
for循环能帮我们干的事有很多很多…
注意这点:初始化表达式 ,循环控制语句 ,增值表达式 ,这三个位置都是可以不写的,至于想要怎么玩就看你们自己的了。[嘻嘻]
int n=10; // 规定循环多少次 int i = 0; for(;;) { if(i>=10) break; printf("重复做的事\n"); i++; }
这样写的代码是和上面一样的效果的:(不信你试试)
同时,break和continue配合循环使用,会有很不一样的效果的,在下面我会说的。
while 循环
这种循环也是很常用的,也十分好理解,其实跟for循环差不多,只不过是把初始化条件写到外面了,把增值表达式写到里面了。
结构(书上一般都会这样写)
while循环的结构如下:
while(循环控制表达式)
{
语句序列
}
我:这种循环就很简单直白了,如果循环表达式为真就执行循环体(上面说过了),每次执行循环体前都要先判断下,知道循环表达式为假就结束循环。
读者:什么是循环体,再说一遍
笔者:得令[毕恭毕敬]
循环体:大括号内的所有内容,可以不止一句。
用法(那么简单你绝对一看就会)
一般来说用 while循环用于倒数或者不清楚循环次数的遍历
int n=10; while(n>0) { printf("看到这里的小可爱最帅/最美\n"); n--; }
我们只要写好控制语句,每次执行循环体前就会先判断下循环控制表达式是否为真,为真就继续执行循环,否则就结束循环。
注意:如果在循环体内忘了对影响循环控制表达式的变量(就是这个 n)进行改变,就会使这个循环变成死循环(一直执行)
运行结果:
10遍当然表达不了我内心的赞美,奈何篇幅有限[卑微]
do-while 循环
我:这种循环有区别于while循环
读者:这不是废话吗
我[鼻青脸肿]:先别打,还没说完
读者:继续说吧
我[卑微,哭泣]:while循环执行循环体前都会先判断下(执行循环控制表达式),而do-while循环会在执行循环控制表达式前先执行一遍循环体(这第一遍循环体是不进行判断的,直接执行)
结构(书上是这样的)
do
{
语句序列
}while(循环控制表达式);
用法(就这?)
这种循环用的不是很频繁,但是有时用这种循环会给力,很合适。
int n=10; do { printf("此时的n=%d\n",n); n--; }while(n>0);
注意:千万不要漏掉那个 n-- ,不然也会是死循环。
当n=0时就会跳出循环了,因为执行循环体的条件是n>0
运行结果:
读者:不看也知道
我[卑微]:我错了,都怪我多此一举
如何中途跳出循环呢
有时在我们执行循环的时候并不知带具体的循环次数,或者我们想要剔除某种特殊的情况,这是就需要用到循环的两个小跟班了(break和continue)
不叫小跟班的代码:
for(int i=1;i<=10;i++) //打印1-10这10个数 { printf("%d\n",i); }
运行结果:
break(大哥)
break为啥是大哥呢,因为break说让循环停,立马就结束了循环。
break:打印6前面的数
循环:不是输出10个数吗
break:把嘴给我闭上,我说个数,到6的就给我结束,不准打印
叫上break的代码:
for(int i=1;i<=10;i++) { if(i==6) break; printf("%d\n",i); }
运行结果:
大哥果然是大哥!(佩服)
continue(小弟)
continue也想像大哥那样,奈何实力有限,只能结束一次循环体,下次循环还继续执行。
continue默默地叹了口气
叫上continue的代码:
for(int i=1;i<=10;i++) { if(i==6) continue; printf("%d\n",i); }
运行结果: