在while循环中,建立一个重复执行固定次数的循环涉及到3个动作:
1)初始化一个计数器
2)计数器与某个有限的值比较
3)每次执行循环,要在循环体中让计数器的值递增
其中,计数器的初始化在循环之外,比较在while后面,计数器递增在循环内
与while循环相比,for循环可以把这3个动作(初始化、比较、递增)放在一起
/* 两种写法可以实现相同的功能 */
// 写法一:使用while循环
int i = 0;
while(i < 10)
{
function();
i++;
}
// 写法二:使用for循环
int i;
for(i = 0; i < 10; i++)
{
function();
}
一、for循环
关键字for之后的圆括号中包含三个表达式,由两个分号隔开:
表达式一:进行初始化,for循环开始时执行一次
表达式二:判断条件,每次执行循环前执行一次,若表达式为假,则循环结束
表达式三:进行改变(更新),每次循环结束时进行计算
三个表达式都是完整的表达式,任意一个表达式的副作用都在程序求下一个表达式的值之前生效
二、for循环的灵活性
1)使用增量运算符或减量运算符
示例代码:
/* test of for */
#include <stdio.h>
int main(void)
{
int i;
int sum;
for(i = 100; i > 0; i--)
{
sum += i;
}
printf("The result is %d \n", sum);
return 0;
}
运行结果:
2)让计数器依次加2、减5等等
...
for(i = 0; i < 100; i = i + 2)
...
...
for(i = 100; i > 0; i = i - 5)
...
3)用字符代替数字(因为字符是以整数形式存储的)
...
for(i = 'a'; i < 'z'; i++)
...
4)判断迭代次数之外的条件
...
for(i = 0; i * i < 100; i++)
...
5)改变数量增长的方式
...
float i;
for(i = 0; i < 100; i *= 1.1)
...
6)表达式三可以使用任何形式的合法表达式
...
int i, j;
j = 0;
for(i = 0; j < 100; j = (i++ * 2) + 1)
...
7)让一个或多个表达式为空(但是不要遗漏分号,且循环中要包含能使循环结束的语句)
...
int i;
for(i = 0; i < 100;)
{
i++;
}
...
8)表达式一也不必初始化一个变量,可以是某种只需要执行一次的其他语句
...
int num = 0;
for(printf("Enter a number: \n"); num != 1; )
{
scanf("%d", &num);
}
printf("You guessed it! \n");
...
9)循环中的动作可以修改循环表达式的参数
...
int i;
int num
for(i = 0; i < 100; i += num)
{
if(i < 50)
{
num = 1;
}
else
{
num = 2;
}
}
...
for循环是一个入口条件循环,是否再次执行循环的决定是在循环执行之前作出,因此有可能循环依次也不执行