循環語句
一、內容提要
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);
}