for循环和do while循环

for循环基本格式

for(表达式1;表达式2;表达式3)
for(初始化 ; 判断  ; 调整)

int main()
{
    int i = 0;
    //for(表达式1;表达式2;表达式3)
    //for(初始化 ; 判断  ; 调整)

    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
            break//i=5时直接跳出,不打印5,打印结果为1,2,3,4
            

        //continue //i=5时,不执行下面的代码,就不会打印5,直接跳到调整部分(i++),此时i=6,再到判断部分(i <= 10),继续执行,所以打印结果为1,2,3,4,6,7,8,9,10
        printf("%d\n", i);
    }
    return 0;
}

 易错点

int main()
{
    int i = 0;
    for(i=1;i<10;i++)
        //不可以在for循环体内修改循环变量,防止for循环失去控制
        if (i = 5)   //此时i被赋值成5,就会出错
        {
            printf("haha\n");
            printf("hehe\n");
        }
    return 0;
}

 for函数变种1

int main()
{
    for (;;)  //for循环的初始化,调整,判断,都可以省略,如果判断部分被省略,那判断条件就是恒为正
    //如果不熟练,建议不要省略
    {
        printf("hehe\n");
    }
    return 0;
}

 随意省略会出现问题

未省略

int main()
{
    int i = 0;
    int j = 0;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            printf("hehe\n");
        }
    }//此时打印100个hehe

    return 0;
}

     
    //若把初始化i=0,j=0省略掉

int main()
{
    int i = 0;
    int j = 0;
    for (; i < 10; i++)
    {
        for (; j < 10; j++)  //在内循环中,在跳出内循环时i=10,然后跳回外循环,往下执行
        //因为内循环的初始化被省略所以i还是10没有被重置,就会直接跳出内循环
        //因此不能随便省略
        {
            printf("hehe\n");
        }
    }//此时打印10个hehe
    
    return 0;
}

 for函数变种2

在for函数条件可以是多个变量

int main()
{
    int x, y; 
    for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)  //前置++ 和后置++都是加1
        //x < 2 && y < 5 同时成立是才继续执行,否则停止
    {
        printf("hehe\n");
    }
    return 0;
}

易错点

请问这个代码循环多少次
int main()
{
    int i = 0;
    int k = 0;
    for (i = 0, k = 0; k = 0; i++, k++)//判断部分k=0,是赋值,而不是判断,所以判断部分始终为假,进不去循环,所以为0
        k++;
    return 0;
}//结果为0次

 do while循环

特点是一定会执行一次,因为是先执行,判断部分在后面

int main()
{
    int i = 1;
    do
    {
        if (i == 5)  //执行阶段 
            //break;//打印1,2,3,4
            continue;   //i=5时,跳出执行阶段不执行i++,直接到判断部分i就会一直等于5,进入死循环,打印1,2,3,4
        printf("%d\n", i);  //一个函数下有多个printf语句必须用{}括起来
            i++;
    } 
    while (i <= 10); //判断部分
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值