C语言-循环语句的一二事

声明:因本人为非科班转码,个人水平有限,博客中难免有不准确之处,如有读者发现,本人恳请大家积极指出,本人也想知道自己的错误在哪里。欢迎大家一起指正,共同进步。

  • 联系方式:3146367553@qq.com


想看结论的可以直接跳转至4-总结部分。

目录

1.循环例子(就这?)

1.1 while循环

1.2 do-while循环

1.3 for循环

2. 循环讲解(以打印1-10为例)

2.1 while-do,while循环的分析与源代码

2.1.1 while循环

2.1.2 do-while循环

2.1.3 while循环和do-while循环的区别

2.2 for循环

2.2.1 为什么建议选择for循环语句(选它,选它!)

2.2.2 for循环的执行流程

2.2.3 打印1-10的for循环流程讲解

2.2.4 for循环变式

3.break和continue作用(给大哥倒一杯卡布奇诺)

3.1 for循环的beak

3.2 for循环的continue语句

4.总结

4.1 三种循环的基本形式

4.2 break和continue

4.3 循环选择及编程习惯


1.循环例子(就这?)

我尽力多写几个例子,以显示三种循环的基本用法。

1.1 while循环

    int i = 0;
    while (i < 3)
    {
        printf("求三连\n");
        i++;
    }

    return 0;
    int j = 0;
    while (j < 10)
    {
        printf("好运满满\n");
        j++;
    }

    return 0;

1.2 do-while循环

    int i = 0;
    do
    {
        printf("求三连\n");
        i++;
    } while (i < 3);

    return 0;
    int j = 0;
    do
    {
        printf("好运满满\n");
        j++;
    } while (j <= 10);

    return 0;

1.3 for循环

    int i = 0;
    for (i=0; i<3; i++)
    {
        printf("求三连\n");
    }

    return 0;
    int j = 0;
    for (j=0; j<10; j++)
    {
        printf("好运满满\n");
    }

    return 0;

2. 循环讲解(以打印1-10为例)

所有循环语句都有初始部分,判断部分和调整部分。初始部分即为最开始的循环变量定义与初始化,判断部分为判断是否跳出循环,达到循环部分时跳出循环,调整部分为每一次循环变量的变化,如i++即为每循环一次,i自增1.

2.1 while-do,while循环的分析与源代码

分析:如果是要写打印1-10的while循环语句,就是从1一直打印到10,超过10则停止。因此,循环判断部分即为 i<=10,初始部分为i=1。而打印的数字为1、2、3、4、5、6、7、8、9、10,每次打印间隔均为1,所以调整部分为i+1或者i++。

2.1.1 while循环

源程序:

#include <stdio.h>

int main()
{
    int i = 1;//初始部分
    while (i <= 10)//判断部分,即为循环控制部分
    {
        printf("%d\n", i);
        i++;//调整部分
    }

    return 0;
}

循环变量在while前面定义,while括号内的为循环控制条件,此判断部分知识点与if语句中的判断部分相同,即0与非0。循环调整部分在while循环体内,因为每次循环都需要调整,所以调整部分在循环体内。

2.1.2 do-while循环

源程序:

#include <stdio.h>

int main()
{
    int i = 1;
    do
    {
        printf("%d\n", i);
        i++;
    } while (i <= 10);

    return 0;
}

do-while循环和while循环极为相似,但是还是有几点需要注意。

注意

①do-while循环中的while那一句千万记得加个分号,这是初学者时常犯错的地方。

②do-while循环体的循环部分在do{}内,而while判断部分在括号后面的同一行。

③do-while循环编写时,while判断部分记得和do{} 间打个空格,养成良好的编程习惯。

2.1.3 while循环和do-while循环的区别

因为while循环是先判断循环控制条件再执行循环体,而do-while是先执行循环再判断循环条件是否符合,所以这会导致一个结论。

结论:while循环可以执行0次,而do-while循环至少执行一次。

2.2 for循环

因为while循环和do-while循环较为容易理解(有英语成分存在的原因),而for循环常用且初学者第一次见,所以将for循环单独写成一点。

分析:如果是要写打印1-10的for循环语句,就是从1一直打印到10,超过10则停止。因此,循环判断部分即为 i<=10,初始部分为i=1。而打印的数字为1、2、3、4、5、6、7、8、9、10,每次打印间隔均为1,所以调整部分为i+1或者i++。在这里,提前提示一下for循环语句的三个部分都在

for(;;)内。

2.2.1 为什么建议选择for循环语句(选它,选它!)

我们知道,循环语句有while、do-while循环语句和for循环语句。以while循环语句为例

(do-while循环)的结构与之类似。

结构:

初始部分;

while(判断部分·)

{

     循环体;

    调整部分

}

小可爱别急,还没说完呢。我接下来继续解释,初始部分为循环变量的定义,其后可能会有很多语句需要编写。同时,循环体部分也常常为多个语句。如此,这会导致初始部分、判断部分、调整部分间隔太远。你可能会说,这有什么关系?但是,我们想一想,如果这时候,你需要对while循环的三个部分做一下修改,是不是三个部分都很难找导致修改不易?

这么说可能有点抽象,让我们上例子。

#include <stdio.h>

int main()
{
    int i = 1;
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    while (i <= 10)
    {
        /* ********************/
        printf("%d\n", i);
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        /* ********************/
        i++;
    } 
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/
    /* ********************/

    return 0;
}

 这样的while循环需要修改,你见到会不会头大?

而for循环,直接是for(初始;判断;调整),这样的循环语句是不是容易修改好多?

2.2.2 for循环的执行流程

for循环流程即为上图(手画有点难看,希望不要介意)。首先①,初始部分对循环变量进行赋值,然后②进入判断部分判断循环变量是否符合条件。如果不符合,直接循环语句结束。如果符合,进行③即执行循环体,然后④对循环变量进行调整,最后是⑤再一次判断循环条件。接下来,便是③④⑤的持续循环,直到循环结束。

2.2.3 打印1-10的for循环流程讲解

#include <stdio.h>

int main()
{
    int i = 0;
    for (i=1; i<=10; i++)
    {
        printf("%d\n", i);
    }

    return 0;
}

 一:定义并初始化循环变量i;

二:

①进入循环,把1赋值给i;

②判断i是否小于等于10;

③i小于10,判断成立;

④执行循环体语句printf,打印i(i=1);

⑤执行调整部分,i+1(此时i=2);

⑥继续进行判断

三:

一直判断,直到i最后一次i++(i=10)

①i=10,符合小于等于10的判断条件;

②执行循环体语句,打印i(i=10);

③i调整,自增1(i=11)

④进入判断部分,不符合

⑤跳出循环

四:执行完return 0;程序结束

2.2.4 for循环变式

①for(;;)里面的三个部分都可以省略

#include <stdio.h>

int main()
{
    int i = 0;
    for (; ; )
    {
        printf("%d\n", i);
    }

    return 0;
}

②for循环判断部分一旦省略即为死循环

#include <stdio.h>

int main()
{
    int i = 0;
    for (i=1; ; i++)
    {
        printf("%d\n", i);
    }

    return 0;
}

这个代码会从1一直打印,直接死循环。

③for循环三个部分有两个自变量

#include <stdio.h>

int main()
{
    int x = 0;
    int y = 0;
    for (x=0, y=0;x<=10 && y<=10 ; ++x, y++)
    {
        printf("(%d, %d)\n", x, y);
    }

    return 0;
}

3.break和continue作用(给大哥倒一杯卡布奇诺)

解释:这里,我采取类比的手法解释下break和contimue。

整个循环好比老师让学生唱歌,每一次换人相当于调整部分,每一个学生唱歌一次就是循环一次。一旦老师碰到continue学生,让他唱歌时,continue唱歌总是找不到调调,所以老师直接说continue,就是不让他继续唱完,直接下一个人唱歌。而break大哥就不一样了,当循环碰到break时,break是唱歌太难听了导致老师都不想听别人(无论谁)唱歌了,即为终止整个循环。

break和continue理解其内在意思即可。

下面做一个测试,以常用的for循环为例。

3.1 for循环的beak

#include <stdio.h>

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

    return 0;
}

结果:只打印1234.

3.2 for循环的continue语句

#include <stdio.h>

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

    return 0;
}

结果:打印1-2-3-4-6-7-8-9-10


4.总结

4.1 三种循环的基本形式

①while

#include <stdio.h>

int main()
{
    初始部分;
    其他语句;
    while (判断部分)
    {
        循环体;
        调整部分;
    }
    
    return 0;
}

while循环可以执行0次

②do-while

#include <stdio.h>

int main()
{
    初始部分;
    其他语句;
    do
    {
        循环体;
        调整部分;
    }while (判断部分);
    
    return 0;
}

do-while循环至少执行一次。

③for循环

#include <stdio.h>

int main()
{
    初始化循环变量;
    for (初始部分; 判断部分; 调整部分)
    {
        循环体;
    }
    
    return 0;
}

4.2 break和continue

break:直接跳出整个循环,后面剩余的循环体不执行

continue:跳出本次循环,后面代码不执行,继续下一次循环。

4.3 循环选择及编程习惯

①优先选择for循环。至少执行一次时选择do-while循环,循环次数有规律也选择for循环。

②for循环的循环体内部建议不要对循环变量进行处理。如下面代码是不建议的

#include <stdio.h>

int main()
{
    int i = 0;
    for (i=1; i<=10; i++)
    {
        i = 5;
        printf("%d\n", i);
    }

    return 0;
}

这样的代码结果是死循环。

③循环编写时,建议左闭右开区间。(初始部分闭,判断部分开)

如:

#include <stdio.h>

int main()
{
    int i = 0;
    for (i=0; i<10; i++)
    {
      
        printf("%d\n", i);
    }

    return 0;
}

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值