首页 > 编程笔记 > C语言笔记 阅读:2

C语言for循环语句的用法(附带实例)

C语言中的 for 循环一般用来编写指定次数的循环,当然也可以用于编写不确定次数的循环。

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

相关文章