C语言for循环语句的用法(附带实例)
C语言中的 for 循环一般用来编写指定次数的循环,当然也可以用于编写不确定次数的循环。
C 语言中 for 循环的基本语法如下:
下面是对 for 循环语句的详细解释:
1)初始化语句会先被执行一次。这一步允许声明并初始化任何循环控制变量,也可以不在这里写任何语句,只要有一个分号出现即可。
2) 接下来会判断执行条件。如果为真,则执行循环体;如果为假,则不执行循环体,且控制流会跳转到紧接着 for 循环的下一条语句。
3) 在执行完一次循环体后,控制流会跳回上面的变量改变语句。该语句允许更新循环控制变量。该语句可以留空,只要在执行条件后有一个分号即可。
4) 执行条件再次被判断。如果为真,则再次执行循环体,这个过程会不断重复(执行循环体,然后增加步值,再重新判断执行条件)。在执行条件变为假时,for 循环终止。
【实例】求 1+2+3+4+…+100 的总和。代码如下:

图 1 实例程序的流程图
如果要得到 1~100 的奇数之和,只需要将变量改变语句 i++ 修改为 i=i+2。或者去掉变量改变语句,在循环体中增加 i=i+2,代码如下:
有时候因为程序需要,初始化语句在 for 语句之前执行也可以,此时代码变为:
有时也可以同时初始化多个变量,但中间要用“,”隔开,例如:
初学者最常见错误是:在
【实例】计算斐波那契数列的第 30 个数。
斐波那契数列(Fibonacci):前两个数都为 1,从第三个数开始,值为前两个数之和。
实现思路是:前两个数为 1,先定义前两个变量 i_a,i_b;第三个数为前两个数之和,定义第三个变量 i_c,i_c= i_a+ i_b;现在有 3 个变量,为了避免冗余,把第二个数的值赋给 i_a,第三个数的值赋给 i_b,i_c= i_a+ i_b 得到第四个数,以此类推。
具体代码如下:
C 语言中 for 循环的基本语法如下:
for ( 初始化语句; 执行条件; 变量改变语句) { 循环执行语句; }在 for 后面的
( )
中,用两个“;”隔开的 3 个子语句,分别是初始化语句、执行条件、变量改变语句(3 个子语句可为空,但;必须保留)。下面是对 for 循环语句的详细解释:
1)初始化语句会先被执行一次。这一步允许声明并初始化任何循环控制变量,也可以不在这里写任何语句,只要有一个分号出现即可。
2) 接下来会判断执行条件。如果为真,则执行循环体;如果为假,则不执行循环体,且控制流会跳转到紧接着 for 循环的下一条语句。
“循环体”就是花括号{}中的内容。
3) 在执行完一次循环体后,控制流会跳回上面的变量改变语句。该语句允许更新循环控制变量。该语句可以留空,只要在执行条件后有一个分号即可。
4) 执行条件再次被判断。如果为真,则再次执行循环体,这个过程会不断重复(执行循环体,然后增加步值,再重新判断执行条件)。在执行条件变为假时,for 循环终止。
【实例】求 1+2+3+4+…+100 的总和。代码如下:
#include <stdio.h> const int LOOP = 100; int main(void) { int i_STEP; int i_sum = 0; //sum保存总和 for (i_SETUP = 1; i_SETUP <= LOOP; i_SETUP++) //++为自加, ++i相当于在循环后i_SETUP = i_SETUP + 1 { i_sum += i_SETUP; /*等价于i_sum = i_sum + i_SETUP*/ } printf("i_sum = %d\n", i_sum); return 0; }编译运行,结果如下:
i_sum = 5050
程序的执行流程图如下图所示:
图 1 实例程序的流程图
如果要得到 1~100 的奇数之和,只需要将变量改变语句 i++ 修改为 i=i+2。或者去掉变量改变语句,在循环体中增加 i=i+2,代码如下:
for (i = 1; i<= LOOP;) { i_sum += i; /*等价于i_sum = i_sum + i*/ i = i + 2; }
有时候因为程序需要,初始化语句在 for 语句之前执行也可以,此时代码变为:
i = 1; for (; i <= LOOP; i++) //++为自加, ++i相当于在循环后i = i + 1 { i_sum += i; /*等价于i_sum = i_sum + i*/ }
有时也可以同时初始化多个变量,但中间要用“,”隔开,例如:
int j = i = 1; for (i = 1, j = 1; i <= LOOP; i++, j++) //++为自加,++i相当于在循环后i = i + 1 { i_sum += i; /*等价于i_sum = i_sum + i*/ }
初学者最常见错误是:在
for(初始值; 条件; 变量)
结束后,不写循环执行语句,直接写“;”,导致具体的循环语句没有执行。【实例】计算斐波那契数列的第 30 个数。
斐波那契数列(Fibonacci):前两个数都为 1,从第三个数开始,值为前两个数之和。
实现思路是:前两个数为 1,先定义前两个变量 i_a,i_b;第三个数为前两个数之和,定义第三个变量 i_c,i_c= i_a+ i_b;现在有 3 个变量,为了避免冗余,把第二个数的值赋给 i_a,第三个数的值赋给 i_b,i_c= i_a+ i_b 得到第四个数,以此类推。
具体代码如下:
#include <stdio.h> const int LOOP = 30; int main() { long int i_a = 1; long int i_b = 1; long int i_c; for (int i = 0; i <LOOP - 2; i++) { i_c = i_a + i_b; //计算第三个数 i_a = i_b; //将原来的第一个数后移 i_b = i_c; //将原来的第二个数后移 } printf("%d ", i_c); return 0; }编译运行,结果如下:
832040