循环语句
一、内容提要
1.for循环;
2.while循环;
3.do while循环;
4.break的使用;
5.continue的使用;
二、内容详解
1、for循环;
for(表达式1;表达式2;表达式3)
{
语句块1
}
表达式1:初始化;最早被执行;有且执行一次。
表达式2:判断,为真循环继续,为加循环结束;每次进入循环都需判断;每次都执行。
表达式3:步进,修改循环因子值;执行完语句块1之后执行;每次都执行。
分析如下代码:
int main()
{
char *strl = "abcde";//字符串常量
char str2[]="abcde";//字符数组
str1[0] = 'x';//崩溃,试图修改字符串常量的值
str2[0] = 'x';
//strcpy,strcat,strcmp,strlen,atoi,itoa
return 0;
}
执行结果如下图:
####表达式1,最早执行,只执行一次
####在每一次循环中,先执行表达式2,如果为真则进入循环里,执行语句块1,最后再执行表达式3.
####表达式2为假,循环结束
例2:输出三个数字
int main()
{
int i;
for(i=0;i<3;i++)
{
printf("%d\n",i);
}
return 0;
}
for循环中的三个表达式都可以省略(两个分号不能省),例如上面的程序可以(不建议)改成如下代码
int main()
{
int i = 0;//初始化
for( ; ; )
{
if(i>=3)//判断
{
break;
}
printf("%d\n",i);
i++;//修改循环因子
}
return 0;
}
for循环是使用的最多的循环语句,其最大的特点就是三个表达式放在一起,不容易漏写。
2、while循环;
while(表达式1)
{
语句块1
}
表达式1为真循环继续,为假循环结束。
上面的例子改成while循环。
int main()
{
int i = 0;//初始化
while(i<3)//判断
{
printf("%d\n",i);
i++;//修改循环因子
}
return 0;
}
3、do while循环;
do
{
语句块1
}while(表达式1);
表达式1为真循环继续,为假循环结束。
上面的例子改成do while循环。
int main()
{
int i = 0;//初始化
do{
printf("%d\n",i);
i++;//修改循环因子
}while(i<3);//判断
return 0;
}
注意:
while保证语句块至少执行0次及以上;
do while保证语句块至少执行1次以上。
当表达式的第一次的值为“真”时,两种循环完全相同。
4、break的使用;
break用于跳出switch或者跳出一层循环
例如:求满足如下条件的值
1+2+#+…+x<1000 且1+2+#+…+x+(x+1)>1000
输出x和求和的值。
void SumTo1000()
{
int sum = 0;//保存累加的值
int i;//i后面要用,定义在for外面
for(i=1; ;i++)
{
sum += i;
if(sum > 1000)
break;//符合条件,循环结束
}
printf("x=%d,和=%d\n",i-1,sum);
}
5、continue的使用;
continue:提前结束本次(趟)循环,直接进入下一次(趟)循环。
例如:输出100~200之间的不能被3整除的数
可以这样实现
for(n=100;n<=200;n++)
{
if(n%3!=0)
printf("%d",n);
}
也可以利用continue关键字这样实现
for(n=100;n<200;n++)
{
if(n%3==0)
continue;//提前结束本次循环,后面的输出不执行
printf("%d",n);
}