C语言中的循环机制可以由下面三种语句实现:while语句、do-while语句、for语句。
一、循环语句
1. while循环
while(循环控制表达式)
{
语句序列
}
例:用while循环体求表达式1+2+3+...+100的值。
#include<stdio.h>
int main()
{
int i=1,sum=0;
while(i<=100)
{
sum += i;
i++;
}
printf("The sum is %d\n",sum)';
return 0;
}
2. do-while循环
do{
语句序列
}while(循环控制表达式);
例: 用while循环体求表达式1+2+3+...+100的值。
#include<stdio.h>
int main()
{
int i=0,sum=0;
do{
sum += i;
i++;
}while(i<=100); //有分号
printf("The sum is %d\n",sum);
return 0;
}
3. for循环
for(初始化表达式;循环控制表达式;增值表达式)
{
语句序列
}
例:用while循环体求表达式1+2+3+...+100的值。
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum += i;
}
printf("The sum is %d\n",sum);
return 0;
}
二、循环的控制
1. 计数器控制循环和其他条件控制循环
1.1 计数器循环
计数器控制循环就像是你在玩一个游戏,游戏规定你必须要走10步才能到达终点。每走一步,你就数一下,直到数到10,你就知道游戏结束了。
1.2 条件控制循环
条件控制循环就像你在一个迷宫里寻找出口。你会一直走,直到找到出口为止。
1.3 对比
- 计数器控制循环:你知道要重复多少次(比如走10步),所以你设置一个计数器来跟踪次数。
- 条件控制循环:你不知道要重复多少次(不知道迷宫有多复杂),但你直到在什么条件下停止(找到出口)。
简而言之,计数器控制循环是基于次数的,而条件控制循环是基于某个条件的真假。
2. break和continue
程序中,有时候并不需要把设定的循环次数都执行完,而是需要提前结束循环或者是跳过一段代码直接进入下一轮的循环,这时候就需要用到break和continue语句。
1.1 break语句
break语句的作用就是终止循环。
例:找出100~200之间第一个能被3和5都整除的数。
#include<stdio.h>
int main()
{
int i;
for(i=100;i<=200;i++){
if(i%15==0){
break; //找到一个就结束循环,不再查找
}
}
printf("%d\n",i);
return 0;
}
2. continue 语句
continue只能用在循环中,其作用是跳过本次循环剩下的部分,去执行下一次循环。
例:从键盘输入两个整数,求它们的最小公倍数
#include<stdio.h>
int main()
{
int a,b;
int i;
scanf("%d %d",&a,&b);
for(i=a;i<=a*b;i++){
if(i%a!=0)
continue; //若除以a除不尽,则转回到i++换下一个数
if(i%b==0)
break; //若除尽,则找到最小公倍数,跳出循环
}
printf("%d和%d的最小公倍数是:%d\n",a,b,i);
return 0;
}
三、多重循环
一个循环体内套着另一个循环体,也叫嵌套循环。
例:找出所有水仙花数,水仙花数是三位数,它的3个数字的立方和等于它本身,如153=1^3+5^3+3^3。
#include<stdio.h>
int main()
{
int i,j,k,m;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if((m=i*100+j*10+k)==i*i*i+j*j*j+k*k*k)
printf("%5d",m);
printf("\n");
return 0;
}