C语言提供了while,do...while,for三种语句构成循环结构。循环语句是程序中的一个基本语句,在编程中,如果我们需要对某些操作对象进行相同的操作,那么,使用循环语句,就能让计算机反复执行,从而减少我们编程时写的语句。接下来,我主要讲解一下主要的三种循环语句(while,do...while,for)和我们在循环中常用到的转移语句(goto,continue,break)
while是当型循环(先判断后执行)
格式: while(表达式) //说明: ① 表达式可以是任意类型的; ② 语句中必须有能改变(表达式)值的语句,否则可以会是死循环 { 循环体语句; }
执行过程:当(表达式)的值为真时,执行{}里的循环体,循环体执行完后,再判断(表达式)是否为真,如果是真就继续执行{}里的循环体,如果是假,就结束循环。
如果第一次表达式就为假,那一次也不执行。
流程图:
do...while循环是直到型循环(先执行后判断)
格式: do { 循环体语句; }while(表达式); //注意:while(表达式); 的 “ ;” 不能漏掉 //说明:① 表达式可以是任何类型;② 语句中必须有能改变(表达式)值的语句,否则可以会是死循环
执行过程:
先执行{}里面的循环体一次,再计算while中的(表达式),如果(表达式)为真,就执行循环,直到表达式的值为假,才结束循环。
不管条件是否满足,循环体总会执行一次。
流程图:
for循环是当型循环(先判断后执行)
格式: for(表达式1;表达式2;表达式3) { 循环体语句; }
一般我们可以理解为:表达式1是初始化赋值; 表达式2是判断; 表达式3是循环后的再赋值
执行过程:
①先计算表达式1(初始化赋值);②然后计算表达式2的值,进行判断:如果表达式2的值是真,则执行一次{}里的循环语句,如果为假则结束循环;③当为真且执行完语句后,计算表达式3,然后再重复过程②
整个循环过程中,表达式1只被执行一次
流程图:
关于表达式省略的运用:
1,表达式1 一般为赋值表达式,给控制变量赋初始值。如果省略表达式1(需要for语句前有进行定义变量),省略后格式如下:
for(;表达式2;表达式3) { 循环语句; }
2,表达式2 一般为判断语句,即:控制循环是否执行的条件判断。如果省略则默认表达式2恒为真。循环语句中必须有结束循环的语句,否则就会变成死循环。省略表达式2,的格式如下:
for(表达式1;;表达式3) { 循环语句; }
3,表达式3 一般为一次循环后再赋值,用来实现变量的自增或者自减。一般我们将表达式3所省略的内容放在循环体中,格式如下:
for(表达式1;表达式2;) { 循环语句; 表达式3 } // 注意:若循环体中没有能改变表达式2的值,则也可能造成死循环,如: for(i = 0;i<100) { 循环语句;(若循环语句不能使表达式2变为假,则变成死循环) }
4,当表达式1,2,3都省略时,此时与无限的while语句等价,格式:
for(;;)
与分支语句类似,我们可以根据实际需求,将循环语句嵌套,实现多重循环,一般的形式有:
1,while() { ··· while() { ··· } ··· } 2,do() { ··· do() { ··· }while(); ··· }while(); 3,while() { ··· do() { ··· }while(); ··· } 4, 1,for(;;) { ··· do() { ··· }while(); ··· while() { ··· } ··· }
循环流程:外层循环执行一层,内层循环要执行完
说明:
1,三种循环可以互相嵌套,层数不限;
2,外层循环可包含两个以上的内存循环,但是这两个内存循环不能相互交叉;
3,①嵌套循环的跳转:只能跳出本层循环;②禁止从外层跳入内层;禁止跳入同层的另一循环和向上跳转
使用范围:break语句只能用于switch或循环结构中
用法:
在switch语句中,break的作用是:结束switch结构。
在循环语句中,break的作用是结束本层循环。
流程图:
使用范围:只能用于循环结构中
用法:
当遇到continue语句时,程序会跳过位于 continue 后面的代码,直接回到判断的部分,进行下一轮的循环判断
流程图:
goto是无条件转移语句(便于运用在:从多层循环结构代码中快速跳出)
用法:
同一个函数内,设置好标号后,goto可以无条件的把程序转移到语句标号所在的位置开始执行(可以跨层)
举例:
#include<stdio.h> int main() { printf("hehe\n"); goto next: printf("haha\n"); next: return 0; }
因为当程序遇到 goto next,程序就会跳转到下面的next,然后执行下面的 return0;的语句,所以这串代码打印出的结果应该是:hehe
注意:如果goto语句使用不当,比如标号位置不得当,就会导致在函数内部随意乱跳转,打乱程序的执行流程。(所以建议初学者不要使用)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有