循环是重复执行其他语句(循环体)的一种语句,在C语言中,每个循环都有一个控制表达式。每次执行循环体时都要对控制表达式求值,如果为真,那么继续执行循环
6.1 while语句
基本表达式为:while (表达式) 语句
- 圆括号内的表达式是控制表达式,圆括号后面的语句是循环体
- 圆括号是强制要求的,而且右括号和循环体之间没有任何内容
- 如果需要多条语句,那么使用花括号构造成一条复合语句
- TEST
/*数列求和,输入回车结束*/
#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语句
基本表达式为:do语句 while (表达式);
- do语句最好都加上花括号
- do语句先执行循环体,如果表达式的值非零,继续执行循环体,然后再次计算表达式的值
- TEST
/*计算整数的位数*/
#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语句
基本表达式为:for (表达式1; 表达式2; 表达式3) 语句
- 即使省略掉某些表达式,控制表达式也必须始终有两个分号
- 如果省略第三个表达式,循环体需要保证第二个表达式的值最终会变为假
- 在表达式中使用逗号,可以进行多步操作
6.4 退出循环
6.4.1 break语句
- 可以用作直接跳出while、do、for语句循环
- 但是break只能跳出一层嵌套
6.4.2 continue语句
- continue语句将程序控制转移到循环体末尾之前,会把程序控制留在循环之内
- continue只能用于循环,不能用于switch
- 相当于重新进行一次循环体内容
- TEST
/*编写程序显示日历,用户指定这个月的天数和起始星期几*/
#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");
}
}