在c语言中具有三种循环语句,循环语句的存在可以大大降低我们编程的复杂性,三种循环语句用以应对不同的情况,但也是大同小异
下面来让我们 一起了解一下C语言中的for,while,do while三种循环语句吧!
首先明确的一点是:任何一个正常的循环语句(死循环除外)都具有1.条件初始化 2.条件判定 3.条件更新
while循环
while循环的使用方式:当while(条件)内中的条件满足时,将会重复不断地执行while语句,直到(条件)不满足条件,才退出循环
//while 语法结构
while(表达式){
循环语句;
}
值得注意的是,当执行一个while循环时,并非先执行while循环,而是先执行括号中的表达式,通过表达式的判定得到真或者假,为真(!=0)则执行语句,为假(==0)则跳过循环语句执行接下来的代码
在我们更为全面的认识while循环之前,我们先来介绍C语言中较为重要的两个关键字,break与continue
break关键字
break字面意思可以理解为跳出循环
continue关键字
continue字面意思可以理解为跳过本次循环
int main(){
int a =10;
while(a>=0){
printf("%d",a);//输出结果为10 9 8 7 6 5 4 3 2 1 0
a--;
}
*******************
int main(){
int a =10;
while(a>=0){
printf("%d",a);//输出结果为10 9 8 7 6 5 break
if(a==5){
printf("break\n")
break;
}
a--;
}
*******************
int main(){
int a =10;
while(a>=0){
printf("%d",a);//输出结果为 10 9 8 7 6 5......死循环(因为continue是结束本轮循环,跳
//到while(a>=0)时的条件判定,将continue后续的代码都不执行,所以不会执行a--语句,一直卡在了
//5这里)
if(a==5){
continue;
}
a--;
}
*******************
int main(){
int a =10;
while(a>=0){
if(a==5){
a--;//将a--移动到continue之前,当continue执行时就跳过了5
continue;
}
printf("%d",a);//输出结果为 10 9 8 7 6 4 3 2 1 0
a--;//外层条件更新
}
for循环
for(表达式1;表达式2;表达式3)
循环语句;
将上述例子改为for循环
int main(){
int a =0;
for(a = 10; a> = 0; a--){//输出结果为10 9 8 7 6 5 4 3 2 1 0
printf("%d\n",a);
}
**************************************
int main(){
int a =0;
for(a = 10; a> = 0; a--){//输出结果为10 9 8 7 6
if(a==5){
break;
}
printf("%d\n",a);
}
***************************************
int main(){
int a =0;
for(a = 10; a> = 0; a--){//输出结果为10 9 8 7 6 4 3 2 1 0
if(a==5){
continue;
}
printf("%d\n",a);
}
不难发现,在使用continue时用for循环会方便很多,这是因为continue在跳出本次循环时跳到的位置是条件判定(for是条件更新),for循环的条件判定和条件更新在一起,所以不会跳过条件更新,而while语句中条件判定和条件更新是分离的,所以很容易造成continue跳过了条件更新,进而形成死循环
for语句的循环控制变量
建议:
do while循环
do
循环语句;
while(表达式);//分号不能忘
do while 循环跟其他两种循环一样,也都具有条件初始化,条件判断,条件更新这三个部分,但是他和其他两个最大的区别就在于do while语句条件的判断在循环的最后,这就导致了不论是否满足条件,在进入do while循环之后都至少进行一次循环语句的执行
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);//输出结果为
i--;
}while(i>=0);
return 0; }
*********************************
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(a==5){
printf("%d\n", i);//输出结果为10 9 8 7 6 5
a--;
break;
}
i--;
}while(i>=0);
return 0; }
******************************
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(a==5){
printf("%d\n", i);//输出结果为10 9 8 7 6 4 3 2 1 0
a--;
continue;
}
i--;
}while(i>=0);
return 0; }
三种循环的死循环实现
while(1){
......
}
******************
for(::){
......
}
******************
do{
.......
}while(1);
以上便是三种循环的简单表示以及对应的break与continue的使用,do while的使用并不经常,推荐在一般使用循环时用for循环,推荐在需要使用死循环时用while
go to 语句
goto语句在一般循环中不常用到,但是如果碰上一些特殊的情况却又不可或缺,让我们来看一下goto语句是如何使用的吧
goto语句由两部分组成,一部分是标志位,另一部分是goto,goto语句在使用时需要先在代码中需要跳转到的位置放置一个标志位,而后将标志符放置在goto后面,此时当代码运行至goto语句时便可以直接跳转到标志位。
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
…
error:
if(disaster)
我们来看一下如上的代码段,假设没有goto语句的存在,我们退出这些for循环可能就需要不断地break,造成代码的冗余,而拥有goto语句之后,则当运行至goto时就可以直接跳转到error处来进行下面的代码,提高效率,但是goto语句使用条件并不多见,而且易造成代码逻辑的混乱,所以不推荐使用。