3.3 for语句
在C语言中,for语句使用最为灵活,它完全可以取代while语句和do-while语句。for语句的基本格式为:
for(表达式1;表达式2;表达式3)
循环语句
它的执行过程如下:
①执行表达式1。
②执行表达式2,若其值为真,则执行循环语句,然后执行表达式3;若其值为假,则循环结束,退出循环,执行后面的语句。
③转到第二步继续执行。
for语句的流程图如图3-4所示。

图3-4 for语句的流程图
for语句中三个表达式的功能各有不同,可以按下面的方式去理解:表达式1通常是用来为变量赋初值和设置初始条件的,只执行一次,它可以为零个、一个或多个变量设置初值。表达式2通常是用来控制循环结束的条件的,在每次执行循环体前先执行此表达式,决定是否继续执行循环。表达式3通常是用来调节变量的增减的,作为循环的调整器,它是在执行完循环体后才进行的。
例3-3 用for语句来实现从1到10之间的整数之和问题,程序如下:

先给变量i赋初值1,判断i是否小于或等于10,若为真,则执行循环语句,然后变量i的值增加1。再重新判断i是否小于或等于10,直到条件为假,即i>10时,循环结束,退出循环。
说明:
①for循环结构中的三个表达式的位置也可以改变。例如,表达式1可以放在for循环前面,如下:
表达式1;
for(;表达式2;表达式3)
循环语句
表达式3也可以放在循环体中,如下:
for(表达式1;表达式2;)
{
循环语句
表达式3;
}
或者表达式1和表达式3不写在括号里,如下:
表达式1;
for(;表达式2;)
{
循环语句
表达式3;(https://www.daowen.com)
}
for语句是非常灵活的,表达式位置可以根据编写程序的习惯来定。
②表达式也可以省略。如果将表达式1省略,如下:
for(;表达式2;表达式3)
循环语句
也就是变量不赋初值。
表达式2也可以省略,也就是不判断条件是不是成立,那就相当于条件始终成立,与while(1)等价,循环一直执行下去,变成了死循环。
表达式3也可以省略,相当于变量的值不变化,每次循环都是初值,循环也会一直执行下去,每次结果都一样,也是死循环。
如果三个表达式都省略,即for(;;),则相当于while(1)。
for语句和while语句、do-while语句可以互换,程序执行结果也是一样的。for循环结构如果改写成while循环,如下所示:
表达式1;
whi le(表达式2)

如果改写成do while循环,如下所示:
表达式1;
{ 循环语句
表达式3;
}whi le(表达式2);
这三种结构在表达式2从一开始就为真时,执行结果是完全一样的,如果表达式2从一开始就为假,那结果就不同了。
例3-4 编程实现输出1到100之间所有能被5整除的数,并求和。
分析:
从1到100之间能被5整除的数有很多,限制能被5整除的条件可以用if语句,表达式为对5取余等于0即可。
程序如下:


在循环语句中,需要判断变量i对5取余是否等于0,如果等于0,则条件成立,输出变量的值,并将变量i加进变量sum中,最后从1到100之间所有符合条件的数均被输出,同时被加进变量sum中,循环结束后,将和sum的结果输出即可。
也可以考虑变量i的初值从5开始,然后增量为5,也可以找出所有能被5整除的数,这样就不用if语句去判断能否被5整除了。
程序如下:

结果是一样的。