目录
前言
我们今天,接着讲解循环语句,需要多加练习才可以更加的牛
三、循环语句
C语言中有三种循环,分别是:
while
for
do while
3.1while循环
首先先了解一下while循环的语法结构:
while(表达式)
{
循环语句;
}
while括号里的表达式为真,就执行里面的语句,为假不执行,跳出循环;下面是一个建议的流程图来描述while循环:
从入口进入while循环语句,判断表达式是否为真,真则就是继续执行循环语句,假直接到出口(也就是循环结束)。
在屏幕上打印1-10的数字:
int main( )
{
int n=1;
whlie(n<=10)
{
printf("%d",n);
n++;
}
return 0;
}
因为while和if一样,只会识别一行代码,所以加上括号,也就是循环括号里的内容,上述就是如果条件成立,就打印n这个数,n从1开始,之后n+1,也就是2,接着在判断表达式是否为真,直到n为11的时候,判断不为真,所以循环结束,最后的结果就是n从1-10都打印了出来。
3.1.1 break
break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有循环,直接终止循环,所以,while中的break是用于永久终止循环的。
例如:
int main( )
{
int n=1;
while(n<=10)
{
if(5 == n)
{
break;
}
printf("%d",n);
n++;
}
return 0;
}
这里就是跟上面的代码一样,输出1-10,但是它循环语句里面有一个限制条件,就是当n==5的时候,循环执行break,由于我们知道了break是停止之后所有的循环(永久终止循环)的 ,所以结果也就可想而知的了屏幕上面只打印1234,当n等于5的时候,break终止循环,连printf打印都没执行上,所以就只打印前四个数就结束了。
case里面也有用到break,跳出case的语句。
3.1.2 continue
continue在while循环中的作用:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环入口的判断。
可以先来分析一下下面的代码:
int main( )
{
int n=1;
while(n<=10)
{
if(5 == n)
{
continue;
}
printf("%d",n);
n++;
}
return 0;
}
可以运行一下就会发现光标在4之后就不会打印了,但程序不会结束,而是一直运行(也就是死循环了)。
当n从1进入循环后,打印到4的时候,n+1也就是5,因为有限制条件,当n=5的时候,执行continue,而我们知道continue的作用是终止本次循环,直接跳转到判断句(循环表达式)进行下一次判断和循环,这时n还是等于5,所以往下运行后还是会执行continue,也就是死循环了,程序永远执行不到尽头。
当我们想要修改上面的代码,让他不输出5,其它的9个数都输出,可以这么写:
int main( )
{
int n=1;
while(n<10)
{
n++;
if(5 == n)
{
continue;
}
printf("%d",n);
}
return 0;
}
这就可以输出1234678910。
3.1.3 总结:
continue在循环中是跳过本次循环执行下一次循环,或者说就是跳过某一次代码中后面的代码。而break则是终止循环中所有的代码,及时下一次循环没有执行,也直接跳出循环(终止循环)。
3.2 for循环
因为while循环比较分散,所以出现了for循环。
for循环的表达结构:
for(表达式1; 表达式2; 表达式3)
{
循环语句;
}
这里表达式1是初始化,也就是对应第一个数的初始化值,表达式2是判断,就是while循环括号里 的内容,表达式3是调整,类似i++等等的,括号里则是循环语句,进行执行。
for循环的流程图如下:
用for循环打印1-10:
int main( )
{
int i = 0;
for(i =1; i<=10; i++)
{
printf("%d",i);
}
return 0;
}
这里首先定义i这个变量,进入for循环,i从1开始进行循环,i先和10进行判断,如果成立,就执行循环语句,然后i++,直到不成立的时候循环结束。跳出循环并返回,程序结束。
C语言中for循环用的最多,其次是while循环,再其次才是do...while循环。
在for循环中break的含义也是一样的,是终止循环,但是continue还是有一些区别的,while语句中遇到continue会直接跳到判断部分,而for中会跳到调整部分(表达式3)。
3.2.1 for语句的循环控制变量
1、不可以在for循环体内修改循环变量,防止for循环失去控制。
2、建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
我们在调整的时候是在括号里面表达式3来写的,要不然非常容易发生错误。
int main( )
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for i =0;
for(i = 0;i < 10; i++)
{
printf("%d",arr[i]);
}
return 0;
}
上述代码就是打印arr数组里面的数,这一种是一种比较好的写法,但是当我们吧 i < 10 改成 i <= 9,理论上也可以输出,但不好,左闭右开写法,后面要写10会有一些意义,可读性比较好,建议采用这种写法。但最终还是看场景,哪一种适合就写哪一种。
3.2.2 一些for循环的变种
1、括号里面什么都不写
int main( )
{
for(; ;)
{
printf("ok\n");
}
return 0;
}
for循环的初始化,判断和调整三个部分就可以省略,但是省略判断部分,判断就恒为真,循环就为死循环。上述代码也就一直输出ok,进入死循环。
2、for的嵌套
int main( )
{
int i =0;
int j =0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("ok\n");
}
}
return 0;
}
这段代码,外层循环三次,内层在外层的基础上循环三次,所以此代码就总共循环9次,也就输出九个ok。
int main( )
{
int i =0;
int j =0;
for(;i<3;i++)
{
for(;j<3;j++)
{
printf("ok\n");
}
}
return 0;
}
当我们把两个for循环的初始化省略之后运行结果就会发现只会打印三个ok,运行开始的时候,i从0开始,j开始循环,j循环到3的时候j的循环跳出,i+1变成2,又进入j的循环,但j由于没有初始化,所以往后的运行j都是3,又因为j的限制判断条件,所以就只能循环第一次的三个ok,剩下的并没有运行。
3、使用多于一个变量控制循环
int main( )
{
int x,y;
for(x =0,y =0; x<2 && y<5; ++x,y++)
{
printf("ok\n");
}
return 0;
}
循环变量可以用多个来控制,只要场景合适就可以,结果是打印两个ok,通过条件就可以看出来。
3.3 do...while循环
3.3.1 do语句的语法
do
循环语句;
while(表达式);
3.3.2 执行流程
这与之间的差不多,判断条件为真就停止循环,为假就返回判断条件继续进行循环,直到循环满足条件循环结束。
3.3.3 do...while循环例子
在屏幕上打印1-10:
int main( )
{
int i =1;
do
{
printf("%d",i);
i++;
}while(i<=10);
return 0;
}
例如上面的代码,先定义一个i为1的变量,然后执行do里面的内容,先打印i,之后在i+1,do执行后再进行判断,如果符合判断式的内容,就继续执行do里面的代码,如果不符合,就结束循环,执行循环外的代码,返回0,结束程序。
do也是只会执行一条语句,想要执行多个语句就需要加上一个大括号。
3.3.4 do语句的特点
循环至少循环一次,也就是执行do里面的语句,使用的场景有限,所以不是经常使用。这里面的break和continue用法和之前的循环里的一样,挨句读就可以。
总结
以上就是今天要讲的内容,本文讲解了循环语句的有关使用。