微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C语言中for用法是什么?

C语言中for用法是:

for 循环语句的一般形式为:

for (表达式1; 表达式2; 表达式3)
{
        语句;
}

首先要强调两点:

1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。

2) for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。

因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于for循环了。

下面来看看它的执行过程:

  • 求解表达式1。

  • 求解表达式2。若其值为真,则执行for语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。

  • 求解表达式3。

  • 转回上面第2步继续执行。

  • 循环结束,执行 for 语句下面的语句。

从这个执行过程中可以看出,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。

for语句最简单的形式是:

for (循环变量赋初值; 循环条件; 循环变量增值)
{
    语句;
}

下面给大家写一个程序,求 1+2+3+4+…+100 的总和。

# include <stdio.h>
int main(void)
{
    int i;
    int sum = 0;  //sum的英文意思是“总和”
    for (i=1; i<=100; ++i)  //++是自加的意思, ++i相当于i = i + 1
    {
        sum = sum + i;  /*等价于sum += i;但是不建议这么写, 因为sum = sum + i看起来更清楚、更舒服*/
    }
    printf(sum = %d\n, sum);
    return 0;
}

输出结果是:

sum = 5050

这个程序的功能是实现求 1+2+3+4+…+100 的和,如果不用循环,加一次就要一条语句,加 100 次就要 100 条语句。这里是从 1 加到 100,要是从 1 加到 10000 那就要 10000 条语句。但有了循环就很方便了,你想加到多少就加到多少,只要改一个参数就可以了。所以循环很重要。

下面按照执行过程看看上面这个程序是怎样执行的。

1、首先定义一个循环变量 i。定义的时候可以不给它赋初值,在 for 循环里面再给它赋初值也行。但前面说过,最好在定义变量的时候就对它进行初始化,如果值不确定就初始化为 0。所以程序中也可以在定义 i 的时候就给它赋初值,那么 for 循环里的“表达式1”就可以省略了,但分号不可以省略。

这样的话,执行的时候就跳过第1步,直接进入第2步,其他的不变。所以程序也可以像下面这样写:

# include <stdio.h>
int main(void)
{
    int i = 1;
    int sum = 0;
    for (; i<=100; ++i)
    {
        sum = sum + i;
    }
    printf(sum = %d\n, sum);
    return 0;
}

当然表达式1加上也行,大不了再重新赋一次值。

2、然后定义一个用来存放“和”的变量 sum,并给它赋初值 0,然后进入 for 循环:

  • 首先求解表达式1,即给变量i赋初值,i=1;表达式1只执行这一次,下面都不会再执行了。

  • 然后求解表达式2,若 1<=100 成立,则执行 for 循环中的内嵌语句,即 sum=0+1。

  • 后执行第3步,变量 i 自加 1,即变量 i 由 1 变为 2。

  • 然后再求解表达式2,2<=100 成立,则执行 for 循环中的内嵌语句,sum=0+1+2。

  • 然后再执行第3步,变量 i 自加 1,即变量 i 由 2 变为 3。

  • 然后再求解表达式2,即 3<=100 成立,则执行 for 循环中的内嵌语句,sum=0+1+2+3。

  • ……

就这样一直循环下去,直到 ++i 等于 100 的时候,求解表达式2,即 100<=100 成立,则执行 for 循环中的内嵌语句,sum=0+1+2+3+…+100。

然后再执行第3步,变量 i 自加 1,即变量 i 由 100 变为 101。然后再求解表达式2,即 101<=100 不成立,则结束循环,执行 for 循环下面的语句即 printf。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐