C for 循环

C for 循环语法

在 C 语言中,除了 while 语句以及 do...while 语句,我们还可以使用 for 语句来实现循环。

语法:

for (初始化表达式; 条件表达式; 循环后操作)
{
    ……
}

说明:

for 语句由 3 部分组成,说明分别如下。需要清楚的是,for 语句的 3 部分都是可选的。

  • 初始化表达式:一般用于定义 “用于计数的变量” 的初始值。可以包含多个用逗号分隔的初始化语句。
  • 条件表达式:表示退出循环的条件,类似 while 循环中的条件(比如 n < 100)。
  • 循环后操作:指的是执行循环体(也就是大括号中的程序)后的操作,类似于 while 循环中的 n++ 之类的。可以包含多个用逗号分隔的更新语句。

C for 循环示例

对于初学的小伙伴来说,看完上面的语法只会觉得一脸懵逼。我们还是通过实际的来学习语法。

示例 1:for 循环实现递增输出

#include <stdio.h>

int main(void)
{
    for (int i = 1; i <= 5; i++)
    {
        printf("%d\n", i);
    }
    return 0;
}

运行结果如下。

1
2
3
4
5

C for 循环流程图

分析:

在 for 循环中,首先定义一个用于计数的变量 i,其中 i 的初始值为 1。然后定义一个判断条件 i <= 5,只要 i 小于或等于 5,就会执行 for 循环中的程序。最后定义一个循环后的表达式 i++,也就是说,每次循环之后都会进行一次 i++。

for 循环和 while 循环一样,都是先判断条件,然后再去执行循环体。如果初值不满足条件,那么一次都不会执行。

(1)第 1 次执行 for 循环。

初始化:int i = 1;。

判断:i <= 5(i 的值为 1,返回 “真”)。

输出:1。

更新:i++(执行后 i = 2)。

(2)第 2 次执行 for 循环。

判断:i<=5(i 的值为 2,返回 “真”)。

输出:2。

更新:i++(执行后 i = 2)。

……

(3)第 5 次执行 for 循环。

判断:i <= 5(i 的值为 5,返回 “真”)。

输出:5。

更新:i++(执行后 i = 6)。

(4)第 6 次执行 for 循环。

判断:i <= 5(i 的值为 6,返回 “假”)。由于此时 i <= 5 返回 “假”,因此条件不满足,退出 for 循环。

当然,这个例子我们也可以使用 while 或者 do…while 来实现。因为程序是活的,不是死的,想要实现某一个功能,方式是多种多样的。

示例 2:for 循环实现递减输出

#include <stdio.h>

int main(void)
{
    for (int i = 5; i >= 1; i--)
    {
        printf("%d\n", i);
    }
    return 0;
}

运行结果如下。

5
4
3
2
1

分析:

这个例子也是非常简单的,小伙伴可以根据上一个例子的步骤来分析一下。

示例 3:for 循环计算 1 + 2 + 3 + ... + 100 的和

#include <stdio.h>

int main(void)
{
    int sum = 0;

    for (int i = 1; i <= 100; i++)
    {
        sum += i;
    }
    printf("1 + 2 + 3 + ... + 100 = %d", sum);

    return 0;
}

运行结果如下。

1 + 2 + 3 + ... + 100 = 5050

分析:

对于 for 循环来说,它的初始化表达式可以不写,或者可以抽离出来,比如下面 2 种方式是等价的。但是第一个分号一定不要删了,删了就是错误的。

// 方式 1
for (int i = 1; i <= 100; i++)
{
    sum += i;
}

// 方式 2
int i = 1;
for (; i <= 100; i++)
{
    sum += i;
}

示例 4:使用多个初始化和循环后操作

#include <stdio.h>

int main(void) 
{
    for (int i = 0, j = 10; i < j; i++, j--) 
    {
        printf("i = %d, j = %d\n", i, j);
    }
    return 0;
}

运行结果如下。

i = 0, j = 10
i = 1, j = 9
i = 2, j = 8
i = 3, j = 7
i = 4, j = 6

分析:

在上面例子中,初始化表达式有 2 个,即 int i = 0 和 j = 10。然后循环后操作也有 2 个,即 i++ 和 j--。

深入了解 for 循环

在 C 语言中,如果想要使用 for 循环来实现递增递减变量,我们没必要单独拿出来放在上面声明。而是直接在 for 语句里面声明赋值就可以了。这样做的好处是,在 for 循环内部声明的变量,其作用域仅限于该 for 循环。

// 推荐
for (int i = 1; i <= 5; i++)
{
    ……
}

// 不推荐
int i;
for (i = 1; i <= 5; i++)
{
    ……
}

此外,一个 for 循环的内部,还可以嵌套另外一个 for 循环。对于这一点,我们在后续的学习中会慢慢接触到。

// 两个 for 循环嵌套
for (int i = 1; i < 10; i++)
{
    for (int j = 1; j < 10; j++)
    {
        ……
    }
}

for 语句是 C 语言中最灵活也是用得最多的一种循环语句,所以小伙伴们一定要重点掌握。在实际开发中,对于已知循环次数的情况,一般来说优先使用 for 循环,因为它结构更紧凑,可读性更好。而 while 循环和 do...while 循环更适用于循环次数不确定的情况。 这也是大多数编程语言中的主要做法。

提示: 很多没有编程基础的初学者在 for 循环都会卡一下,对这种语法感到很难理解。其实大家都这样过来的,并不是只有你一个。所以不要老埋怨自己笨,因为谁都做过小白。语法记不住没关系,等到需要用了,回来这里对着这几个例子 “抄” 过去,然后写多两次,自然就会了。

上一篇: C do while 循环

下一篇: C break 语句

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号