在C语言中,循环结构有三种:while循环、do...while循环、for循环。
1.while循环
while语句一般形式为:
while(表达式) 语句;
性质:
(1)while后面的语句可以是单行语句,也可以是{}括起来的复合语句,这些语句是while循环的循环体。
(2)while后面括号中的表达式一般是关系表达式或者逻辑表达式,用来控制循环体的执行次数。当表达式为真(非零)时,就执行循环体,否则就跳出循环。
(3)先判断表达式,后执行循环体
实例:计算从1加到100的和并输出
#include<stdio.h>
int main() {
int sum = 0, i = 1;
while (i <= 100) {
sum += i;
i++;
}
printf("%d", sum);
return 0;
}
运行结果:
2.do...while循环语句
一般形式:
do{
语句块
}while(表达式);
与while循环的区别在于,do...while循环首先会先执行一遍循环体,才开始判断,也就是说do...while语句至少执行一次,而while语句有可能一遍都不执行。
实例:打印1到10,空格隔开
#include<stdio.h>
int main() {
int i = 1;
while (i <= 10) {
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
3.for循环
for循环是用的最多的循环,务必重视。
一般形式为:
for(表达式1;表达式2;表达式3){
语句块
}
执行过程:
(1)执行表示式1,该表达式只会被执行1次;
(2)执行表达式2,若为真,则执行循环体,然后执行第(3)步;如果为假,直接结束for循环;
(3)执行表达式3,然后跳回第(2)步重新执行。
性质:
(1)三个表达式以分号隔开;
(2)三个表达式都是可选项,即可以省略
(3)表达式1一般是循环变量赋值;表达式2一般是循环条件;表达式3一般是循环改变量
实例:输出[10,20]间的偶数
#include<stdio.h>
int main() {
for (int i = 10; i <= 20; i += 2) {
printf("%d ", i);
}
return 0;
}
运行结果:
常见错误:while循环和for循环圆括号后多加了分号,do...while循环少加了分号。
4.改变循环执行状态
(1) "break;"语句可以强制跳出循环,一般与if配合使用,不单独使用。在循环嵌套中,只强制结束离它最近的上一层循环。
(2)有时在程序中并不希望终止整个循环,而是只希望终止本次循环,后面的循环接着进行此时使用break不合适,而continue可以起到这个作用。
实例:输出[10,20]间的偶数和
#include<stdio.h>
int main() {
int sum = 0;
for (int i = 10; i <=100; i ++) {
if (i % 2 != 0) {//奇数的情况
continue;
}
if (i > 20)
break;
sum += i;
}
printf("%d", sum);
return 0;
}
运行结果:
5.实例 津津的储蓄计划 洛谷P1089
输入 #1
290
230
280
200
300
170
340
50
90
80
200
60
输出 #1
-7
输入 #2
290
230
280
200
300
170
330
50
90
80
200
60
输出 #2
1580
参考答案:
#include<stdio.h>
int main()
{
int plan,b=0,mm=0,sign=1,answer;
int i=0;
for(i=0;i<12;i++)
{
scanf("%d",&plan);
b+=300;
if((b-plan)<0&&sign)
{
sign=0;
answer=-(i+1);
}
mm+=(b-plan)/100*100;
b=(b-plan)%100;
}
if(sign==1)
printf("%d\n",(int)(b+mm*1.2));
else printf("%d",answer);
return 0;
}