位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 for语句

提问人:刘团圆发布时间:2020-11-30

1.for循环的一般形式

for循环的一般形式如下:

f or (表达式1:表达式2:表达3)

循环语句

说明如下:

①表达式1:通常是给循环变量赋初值,一般是一个赋值表达式。

②表达式2:通常是循环条件,是用来判断循环是否继续执行的关系表达式或逻辑表达式。这个表达式通常与某一个(或多个)变量的值有关,随着这个(些)变量值的改变,表达式的结果发生变化,由此来达到循环条件趋近于0,从而退出循环。这个(些)变置一般被称为循环变量。

③表达式3:通常可用来修改循环变量的值,一般是赋值语句,可将表达式3称为循环步长。

④循环语句可以是一条语句,也可以是多条语句,如果是多条语句,要使用复合语句的形式。

2. for循环的执行过程

①计算表达式1,通常用于循环开始前对循环变量设置初值。

②计算表达式2,值为0则结束循环,否则执行第3步。

③执行循环语句。

④计算表达式3,返回第2步。 for语句的执行流程如图所示。

从执行流程图中可以看出,整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。如果开始表达式2的值就为0的话,循环可以一次也不执行。例如:

for(i—10; i<5; i++)

    printf("%d",i);

程序中,先将赋值为10,之后判断表达式2: i<5表达式不成立,所以循环一次也不执行。

image.png

在某些情况下,for语句中的表达式1、表达式2、表达式3都可以省略,而改用其他的方式来实现这些功能。例如:输出1~20之间的整数。

①正常的程序为:

int i;

    for (i-1;i<=20;i++)

      printf("%d",i);

②省略表达式1的情况:

int i-1; /*定义变量i并初始化,相当于表达式1的功能*/

for(;i<=20;i++)         /*此处表达式1省略,但分号“;”不可以省略*/

    printf ("%d ",i);

③省略表达式2:

for(i=l;;i++)

{

    if(i〈一20)

        printf ("%d  ",i);

    else

        break;        /*使用break终止循环*/

}

    此时for语句没有设定循环结束条件,等效于while(1)语句。如果循环体中没有相应的控制循环退出的手段,则造成死循环。

    break语句用在循环体内,可以终止循环。具体用法将在后面介绍。

④省略表达式3:

for(i=l;i<-20;)

/*省略的表达式3放在了循环体中,分号“;”同样不可省略*/

{

    printf("%d  ",i);

    i++;

}

这里需要注意,不要写成如下形式:

for(i=l;i<=20;i++)

{

    printf ("%d ",i);

    i++;

}

这样写相当于i++;执行了两次,那么输出的就是1〜20之间的奇数了。 

⑤也可以表达式1、2、3全部省略,则程序可写成如下形式:

int i=l;             /*起到表达式1的作用*/

for(;;)

{

    if(i<-20)        /*起到表达式2的作用*/

        printf ("%d

    else

        break;

    i++;             /*起到表达式3的作用*/

}

3.循环程序设计思路

实际编程时,不管是用for、while、do-while三种语句中的哪种语句来实现循环,在分析问题是否使用循环来实现的时候,需要考虑以下几个问题:

①输入是什么?用来确定原始值。

②输出是什么?确定应该输出的结果。

③从输入转换为输出需要怎样的步骤,是否需要重复。(确定是否需要使用循环语句,及循环语句的内容)

④如需重复,能否提前预知重复的次数?以便用来确定使用while、do-while, for哪种循环语句。

⑤何时不再需要重复?以便用来确定循环条件,及循环体中使循环条件趋近于0的语句。

4.三种循环的比较

所有需要用到循环结构的程序,都可以用for、while、do-while中的任何一个来实现,区别只在于某些问题用哪种语句更方便。

•对于已知执行次数的循环使用fo「循环更加方便;

•循环次数未知,而是需要使用根据某一条件来决定是否退出循环的,可以使用while循环或do-while 循环。do-while循环条件放在循环体之后,最少执行一次循环体。


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部