在C语言中,我们可以通过while、for、do while来实现循环结构。
1. while 语句
1.1 while 语句的执行流程
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语 句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。
1.2 while循环的实践
例如 在屏幕上打印 1~10 的值:
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
2. for 语句
2.1 for循环的执行流程
⾸先执⾏ 表达式
1
初始化循环变量,接下来就是执⾏ 表达式
2
的判断部分, 表达式
2
的结果如果 ==0,则循环结束; 表达式2
的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表达式 3 ,调整循环变量,然后再去 表达式
2
的地⽅执⾏判断, 表达式
2
的结果是否为0,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。
2.2 for循环的实践
例如 在屏幕上打印 1~10 的值:
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
2.3 while循环和for循环的对比
for
和
while
在实现循环的过程中都有初始化、判断、调整这三个部分,但是
for
循环的三个部分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while
循环的三个部分就⽐较分散,所以从形式上 for
循环要更优⼀些。
3.do while 语句
3.1 do while循环的执行流程
在
do while
循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在
do while
语句中循环体是⾄少执⾏⼀次的,这是
do while
循环⽐较特殊的地⽅。
3.2 do while循环的实例
例如 在屏幕上打印 1~10 的值:
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}
4. break和continue语句
在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中 提供了 break
和
continue
两个关键字,就是应用到循环中的。
break
的作用是⽤于永久的终止循环,只要
break
被执⾏,直接就会跳出循环,继续往后执行。
continue
的作⽤是跳过本次循环
continue
后边的代码,在
for
循环和
while
循环中有所差异的。
5. 循环的嵌套
while
,
do while
,
for
这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套,这⾥我们就看⼀个例⼦。
找出100~200之间的素数,并打印在屏幕上。
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
//判断i是否是素数
//如果是素数,就打印,不是素数就跳过
//那2~i-1之间的数字去挨个试除i,如果其中有一个数字整除了i,i就不是素数
//如果所有的数字都不能整除i,i就是素数
int j = 0;
int flag = 1;
for (j = 2; j <= i - 1; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d ", i);
count++;
}
}
printf("\ncount = %d\n", count);
return 0;
}