C语言中for循环语句的用法

2023-06-20,,

这期内容当中的小编将会给大家带来有关C语言for循环语句的用法,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

for循环是编程语言中一种开界的循环语句,而循环语句 由循环体及循环的终止条件两部分组成,for循环其在各种编程语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。

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 (循环变量赋初值; 循环条件; 循环变量增值)
{
    语句;
}

C语言的四种运行模型(箭头表示循环方向):

(1)三角基本模型:

例子:

(2)中间循环体被省略得只剩下";"空语句时的左右往返模型:

条件表达式↹末尾循环体

例子:

(3)末尾循环体被省略后的上下往返模型:

条件表达式

↓↑

中间循环体

(4)条件表达式被省略得只剩下";"空语句时,中间循环体或末尾循环体带有跳出语句时的模型

看完上面四个模型后,你会发现其实它的完成的都是同一个问题,但可以写成这么多种模型,当然了,这只是省略其中一个语句的模型,你也可以仿照着侵略得只剩下一个语句都可以,前提是不要搞成死循环!

下面给大家写一个程序,求 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。

以上就是这个程序的执行过程。关于 for 语句的代码规范化问题,有两点要再跟大家强调一下:

1)if、else、for、while、do 都只能控制到其后的一条语句,如果要控制多条语句必须加大括号{}。但基于代码规范化,if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}。

2) 像 if、for、while 等关键字之后应留一个空格再跟左括号(,以突出关键字。

此外上面的程序还有一个知识点要跟大家说一下:从功能上讲,for(i=1; i<=100;++i)完全可以写成for(i=1; i<101; ++i),而且建议大家尽量使用这种写法。也就是说,循环语句的循环条件尽量写成半开半闭的,不管是 for 循环还是 while 循环。

for(i=1; i<101; ++i)实际上是 1≤i<101,是半开半闭的;而for(i=1; i<=100; ++i)实际上是 1≤i≤100,是全闭的。那么为什么建议使用半开半闭的呢?因为如果写成 i<=100 的话,那么每次判断的时候都要判断两次,即 i<100 和 i==100,而写成 i<101 的话每次只需要判断一次。

下面再给大家写一个程序,求 1 到 100 之间所有奇数的和。

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

输出结果是:

sum = 2500

上述就是小编为大家分享的C语言中for循环语句的用法了,如果您也有类似的疑惑,不妨碍参照上述分析进行理解。如果想了解更多相关内容,请关注本站行业资讯。

《C语言中for循环语句的用法.doc》

下载本文的Word格式文档,以方便收藏与打印。