循環(huán)是重復(fù)執(zhí)行其他語句(循環(huán)體)的一種語句,在C語言中,每個(gè)循環(huán)都有一個(gè)控制表達(dá)式。每次執(zhí)行循環(huán)體時(shí)都要對控制表達(dá)式求值,如果為真,那么繼續(xù)執(zhí)行循環(huán)
6.1 while語句
基本表達(dá)式為:while (表達(dá)式) 語句
- 圓括號(hào)內(nèi)的表達(dá)式是控制表達(dá)式,圓括號(hào)后面的語句是循環(huán)體
- 圓括號(hào)是強(qiáng)制要求的,而且右括號(hào)和循環(huán)體之間沒有任何內(nèi)容
- 如果需要多條語句,那么使用花括號(hào)構(gòu)造成一條復(fù)合語句
- TEST
/*數(shù)列求和,輸入回車結(jié)束*/
#include <stdio.h>
int main(){
int flag=1, total=0;
printf("Enter number: ");
while(flag!='\n'){
scanf("%d",&flag);
total += flag;
}
printf("Total is %d",total);
}
6.2 do語句
基本表達(dá)式為:do語句 while (表達(dá)式);
- do語句最好都加上花括號(hào)
- do語句先執(zhí)行循環(huán)體,如果表達(dá)式的值非零,繼續(xù)執(zhí)行循環(huán)體,然后再次計(jì)算表達(dá)式的值
- TEST
/*計(jì)算整數(shù)的位數(shù)*/
#include <stdio.h>
int main(){
int flag=1, total=0;
printf("Enter number: ");
while(flag!='\n'){
scanf("%d",&flag);
total += flag;
}
printf("Total is %d",total);
}
6.3 for語句
基本表達(dá)式為:for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句
- 即使省略掉某些表達(dá)式,控制表達(dá)式也必須始終有兩個(gè)分號(hào)
- 如果省略第三個(gè)表達(dá)式,循環(huán)體需要保證第二個(gè)表達(dá)式的值最終會(huì)變?yōu)榧?/li>
- 在表達(dá)式中使用逗號(hào),可以進(jìn)行多步操作
6.4 退出循環(huán)
6.4.1 break語句
- 可以用作直接跳出while、do、for語句循環(huán)
- 但是break只能跳出一層嵌套
6.4.2 continue語句
- continue語句將程序控制轉(zhuǎn)移到循環(huán)體末尾之前,會(huì)把程序控制留在循環(huán)之內(nèi)
- continue只能用于循環(huán),不能用于switch
- 相當(dāng)于重新進(jìn)行一次循環(huán)體內(nèi)容
- TEST
/*編寫程序顯示日歷,用戶指定這個(gè)月的天數(shù)和起始星期幾*/
#include <stdio.h>
int main(){
int total_days,first_day;
printf("Enter total: ");
scanf("%d",&total_days);
printf("Enter first: ");
scanf("%d",&first_day);
int k = 1;
while(k < first_day){
printf(" ");
k++;
}
for(int i=1;i <= total_days; i++){
printf("%2d ",i);
if((i+first_day-1) % 7 == 0)printf("\n");
}
}