C语言基础篇(四)——循环结构

C语言基础篇(四)——循环结构

一.for语句

1.模板
for(表达式1;表达式二;表达式3)
{
    语句块
}

为了能大家能充分理解for循环语句的执行顺序,我们编写一段代码尝试下:

#include<stdio.h>

int main()
{
    int i;
    for (i = 0,printf("表达式1\n");printf("表达式2\n"), i < 3; i++,printf("表达式3\n"))
    {
        printf("语句块\n");
    }
    return 0;
}

这里写图片描述
从运行结果来看,表达式1只执行一次,类似于初始化,表达式2是判断语句,语句块是若表达式2为真,则执行,否则跳出循环,表达式3是在语句块执行后执行。

注:a.表达式1,2,3都可以省略

    for (;;)
    {
        printf("单身狗\n");
    }

这里写图片描述
由于没有判断表达式,所以进入了死循环。
b.关于for循环效率的问题:
对于多重for循环,把最长的循环放到最内层,最短的循环放到最外层,这样可减少CPU跨切循环层的次数,提高循环效率。

二.while循环

1.模板

while(表达式)
{
    语句块
}

话不多说,上代码:

int i=0;
    while (printf("表达式\n"),i < 2)
    {
        printf("i=%d\n", i);
        i++;
    }

这里写图片描述
while后的表达式是判断式,为真则进入循环体,执行循环体,为假则跳出循环。
注:while后的表达式不可省略;若要使表达式恒为真,则可填入1;使表达式恒为假则填入0.

三.do…while语句

1.模板

do
{
语句块
}
while(表达式);

测试代码:

int i = 3;
    do
    {
        printf("i=%d\n", i);
        i--;
    } while (printf("表达式\n"), i);

这里写图片描述
从结果可以看出do…while语句是先执行了一次循环体,再进行判断的。那么倘若初始条件不满足循环条件时,会不会执行循环体呢?上代码:

    int i = 1;
    do
    {
        printf("i=%d\n", i);
    } while (i>2);

这里写图片描述
明显可以看出不满足循环条件,就执行了循环体,所以再一般情况不建议使用do…while语句。
注:
a.do…while的表达式也不能省略。
b.do…while()后有分号,不可省略。

四.扩充内容

1.continue&break
continue:跳过本次循环。
break:跳出跳出循环体,结束循环。

    int i;
    for (i = 1; i < 5; i++)
    {
        if (i == 2)continue;
        printf("i=%d\n", i);
    }

这里写图片描述
可以看出来,循环结构跳过了i==2。

    int i;
    for (i = 1; i < 5; i++)
    {
        if (i == 2)break;
        printf("i=%d\n", i);
    }

这里写图片描述
我只将continue改为break,发现循环体执行到i==2时就直接跳出了循环结构。
2.三种循环语句的区别
a.for语句可以省略()内的所有表达式,while和do…while不可以省略。
b.for语句和while语句都是先判断是否满足条件,再执行循环体,do…while语句是先执行一边循环体,再判断是否满足条件。
c.for语句功能最强大,甚至可以将循环体中所有语句写入写入表达式3中。
d.for语句的循环变量初始化可以在表达式1中,而while和do…while的循环变量初始化只能在循环语句之前。
e.倘若知道循环次数,一般使用for语句,不知道循环什么时候停止(例单链表的建立),一般使用while.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值