目录
前言
本文是接着上篇分支语句,来简单介绍C语言循环结构的基础语法,希望对大家有所帮助
一、while循环
while循环作为C语言三大循环之一,使用较多,语法结构与 if 类似,都是需要先进行判断,再是否进入代码块
1.语法
while循环的基础语法如下:
while (表达式)
{
语句;
}
注意:这里如果不带上大括号,进入while只能执行下面一条语句,如果循环体只有一条可以省略,但是我还是建议循环体语句哪怕只有一条都带大括号,能有效避免错误代码
再次提醒:C语言中0表示假,非0表示真
2.循环的调整、判断以及循环流程
在一般的需求中,也就是不需要死循环,都有循环的调整和判断
我们先看下面代码:
while 后面的表达式,也就是这里的i变量,是用于判断是否进入循环体的,与if语句一样,表达式的值为真进入循环体,为假也就是0则直接结束循环
这里的 i-- 与 i++ 改变条件判断中的i的值,使其达到表达式的范围时结束循环,避免造成死循环
所以每次循环体的执行流程为:先进行条件判断,为真,则进入循环体,为假则直接结束循环,
进入循环体代码依次向下执行,执行完后再进行条件判断,循环往复
3.死循环
while的死循环在许多情况下用处还是挺多的
如图:
死循环里,whlie后面表达式里的值为非0就行,但我们习惯上使用1
上面我们使用了break语句结束循环,即在i 等于10的时候跳出循环,因为,即使是死循环,一般情况下,当循环满足我们的需求后,我们也会使用break关键字结束循环,而不会制造真正的死循环
4.while的嵌套循环
基本所有的分支循环语句都可以进行嵌套使用
如图:
执行顺序:外while循环执行一次,里while循环执行到条件不满足为止,即上图中当 j 等于4时跳出循环,然后 i 调整加1,随后外while循环执行第二次,j 被调整为0,再次进入里while循环,如此循环下去,直到 i 大于等于3外循环条件不满足,整个循环结束
注意:嵌套的循环次数和层数都没有限制,根据实际需求即可,另外while也可以嵌套for,do-while,三个循环语句之间可以任意嵌套使用
小结:
以上就是while循环的基本内容 ,下面介绍for循环
二、for循环
for 循环是三种循环里使用最多的一种
1.语法
语法如下:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
- 表达式1用于循环变量的初始化
- 表达式2用于循环结束条件的判断
- 表达式3用于循环变量的调整
注意:没有大括号只会执行一条语句
与while循环最大的不同就是,for循环将循环变量的初始化,条件判断,循环变量的调整都放在了循环的开头
执行顺序:首先执行表达式1初始化循环变量,接下来就是执行表达式2的判断部分,表达式 2 的结果如果==0,则循环结束, 表达式 2 的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式 2 的地方执行判断,表达式 2 的结果是否为0,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环
如图:(打印1到10的数字)
注意:如果我们把表达式2改为非0数字,for循环也会变成一个死循环
2.for循环的嵌套使用
如图:
与前面while嵌套循环对比,一样的结果,for循环看起来更简洁,因为while循环里的循环变量初始化和变量调整都写在循环体内,而for循环写在小括号里,这样也会导致continue的效果不一样,后面有说
for相比于while循环的优点:for循环的三个部分非常集中,便于代码的维护,如果循环体代码数量多,while循环三个部分较分散,所以形式上for循环更优
小结:
以上为for循环的基础内容,下面开始介绍do-while循环
注意:与while一样,for循环可以嵌套很多层,根据实际需求即可
三、do-while循环
在循环语句种,do-while使用最少
1.语法
语法如下:
do
{
语句;
} while (表达式);
while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳 出循环
而do-while 循环则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环
所以在 do while 语句中循环体是至少执行一次的,这是 do while 循环比较特殊的地方
如图:(打印1至10)
小结:
do-while总体来说内容比较少,因为循环体至少执行一次,就适用先执行一次再判断是否继续的场景
do-while循环也可以嵌套另一个do-while,或者while和for,因为用法少,这里不再演示,和上面while,for嵌套形式一样
四、break和continue关键字
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象,C语言提供break和continue这两个关键字,就是应用到循环中的(break也被用于switch中)
- break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行
- continue 的作用是跳过本次循环中的continue后的代码,在for循环和while循环中有所差异
1.break
while循环中终止循环,没有打印“hh”
for循环中终止循环,打印到5就终止了循环
do-while循环中,打印到5就跳出了循环
注意:break只会跳出本层循环,在嵌套循环中,如果break在里循环里执行,只会跳出里循环,而不会跳出外循环
2.continue
continue是继续的意思,在循环中的作用就是跳过本次循环中continue后的代码,继续执行下一次的循环
我们把上面三个代码中的break替换为continue
while中,这里程序没有结束标志,说明程序陷入了死循环,因为continue跳过了printf以及i++,i的值永远为1,程序也就不会停止下来
for循环中,我们发现程序正常打印了1至10,这是因为在for循环里,i++写在for后的小括号里,而当i==5时,continue直接跳到了i++,而不会像while循环那样跳过i++,因为continue后面没有了可跳过代码,对程序没有任何影响
我们把printf函数移动到if下面,我们发现除了5其他的都打印了,因为当i==5时,continue跳过了打印函数,直接跳到了表达式3,也就是i++,进行调整循环变量
do-while与while相似,只是会先执行一次循环体,这里不再演示
五、goto语句
C语言提供了⼀种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处
1.语法
goto 标号;
标号:
标号名字任意英文,只要不和库函数和关键字冲突,最好带有意义明确的标号,注意符号
如图:
goto直接跳过了中间的打印函数,跳到了标号处
2.注意
goto语句如果使用不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们建议是能不用尽量不要使用,但goto语句也不是一无是处,在多层循环的代码中,如果想要跳出,使用goto语句就非常方便
如:
像这种多层循环嵌套,如果使用break一层一层跳出,非常繁琐,使用goto就非常简洁
总结
以上就是本文关于C语言循环结构的基础知识,感谢大家的支持,有什么问题欢迎评论区讨论