C语言循环 - 日理万妓 2021-11-10 22:44 359阅读 0赞 # 程序结构 # 在C语言程序中,一共有三种程序结构:顺序结构、选择结构(if和switch分支结构)、循环结构; 顺序结构:从头到尾一句接着一句的执行下去,直到执行完最后一句; 选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行,由if、switch实现,前面的章节我们已经学习过。 循环结构:循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次,由while、for和do while来实现。 # while循环 # while循环的一般形式为: ![20190803193502728.png][] 意思是,先计算“表达式”的值,当值为真时(表达式的值非0即是真),执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……,这个过程会一直重复,直到表达式的值为假,就退出循环,执行while后面的程序代码。 循环也常常出现在我们的生活中,以用餐为例: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70][] 人们的用餐就是一个循环,“没有吃饱并且还有饭菜”是循环首部要判断的表达式,它的取值会随着循环次数的增加而改变,“夹一把菜”、“吃一口菜“、吃一口饭”是循环体,随着循环次数的增加,一定会吃饱或者饭菜被吃完,循环结束。 do-while循环的一般形式为: ![20190803193532243.png][] 表达用餐的过程如下: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 1][] do-while先执行一次循环,然后再判断表达式的值,如果为真,再执行循环体,如此重复去下。 实际编程中使用while循环较多,我从来不用 do-while,在接下来的章节中就不讲它了。 continue和break两个关键字用在循环体中,用于处理异外情况。 continue用于跳转到循环的首部。 break用于跳出循环。 继续以用餐为例: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 2][] 用餐的循环体一般来说有夹菜、吃菜、吃饭三条语句,因为胃口不好,可能跳过吃饭语句,只吃菜。 ![20190803193623540.png][] 各位在用餐的时候,眼睛应该会看着饭菜,应该也会判断是否有虫子,如果有虫子,估计也会跳出循环体。 如果不知道循环的次数,以达到某个目标为目的比较合适用while,例如:利用一个循环,把用户每次从键盘输入的数据累加起来,如果总和超过了5000,循环结束。 **示例(book31.c)** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 3][] **运行结果** ![20190803193655822.png][] # for循环 # for循环的一般形式为: ![20190803193710363.png][] 1)for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句1。 2)接着判断表达式的条件,如果条件成立,就会执行循环体中的语句块。 3)循环体语句块执行完毕后,接下来会执行语句2。 4)重复执行第2)步和第3),直到条件不成立就结束for循环。 注意: 1)在for循环中,语句1;表达式;语句2都可以空,for (;;)等同于while (1)。 2)continue和break两个关键字也可以用在循环体中。 for循环应用于事先知道循环总次数的场景,一般与计数器或数组结合一起使用。例如:利用一个循环,把1到100之间的数值累加起来。 **示例(book33.c)** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 4][] **运行结果** ![20190803193748876.png][] # for循环嵌套 # 我们来看一个生活中的例子,某宾馆有3层,每层有4个房间,打扫房间的阿姨利用了循环嵌套来安排工作。 **示例(book35.c)** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 5][] **运行结果** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 6][] # 循环的选择 # for循环可以实现while循环的功能,while循环也可以实现for循环的功能,没有那个更好的说法,要看应用场景。 **for循环应用于事先知道循环总次数的场景,一般与计数器或数组结合一起使用。** **while循环事先不知道循环的总次数,以达到某个目标为目的循环场景,例如用餐,没人关心过一顿饭要吃多少口,吃饱或没东西可吃是循环结束。** # 死循环 # 死循环是指循环的条件永远为真,并且循环体中也没有满足跳出的条件,死循环有两种写法: ![20190803193835147.png][] 出现死循环的情况有两种:1)程序的逻辑错误;2)程序员故意为之。第一种情况就不说了,程序员自己去解决,第二种是程序功能的需要,但是程序员仍有其它的办法让程序中止,这么说可能难以理解,没关系,在以后的课程中将会介绍。 如果你的程序不小心进入了死循环,可以用Ctrl+c中止。 # 应用技巧 # 1)for循环的计数器,习惯的写法是for (ii=0;ii<=10;ii++),表示从0、1……到10,从小到大的方式计数,但是在某些应用场景中,可能需要从大到小的方式计数,for (ii=10;ii>=0;ii--),也是可以的。 2)for循环的计数器,习惯的写法是for (ii=0;ii<=10;ii++),表示从0、1……到10,从小到大一次增加1的方式,但是在某些应用场景中,计数器不一定是增加ii++,ii=ii+2也是可以的。 # 版权声明 # C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。 来源:C语言技术网([www.freecplus.net][]) 作者:码农有道 如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发我的文章,谢谢!!! 如果文章有错别字,或者内容有误,或其他的建议或意见,请您留言指正,非常感谢!!! [20190803193502728.png]: /images/20211109/b3f15df91d3e403bafab2d0f567a3e8d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70]: /images/20211109/1ad883b613de449483f3d7b2934322f3.png [20190803193532243.png]: /images/20211109/dac730b92c63404ebf17d8118d368f0b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 1]: /images/20211109/1a6dc0795a174717bc682522a2148601.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 2]: /images/20211109/8be4f94b1b2e49ab839cad0741ea1170.png [20190803193623540.png]: /images/20211109/5802ce5fa7374fe58fd2c97660f33b32.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 3]: /images/20211109/5ed934bdcd6647c3a2a0f2f2811c0487.png [20190803193655822.png]: /images/20211109/92d2f49466074efdb222b9b5bf33561e.png [20190803193710363.png]: /images/20211109/1be030778e8b4e8a8d8e3719d602d708.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 4]: /images/20211109/4c6e4fb832ef4dcbadf4abb7004cf06a.png [20190803193748876.png]: /images/20211109/fe4457a53d1e447cb5f5d88312385008.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 5]: /images/20211109/41db6843c585467bbe7ccc7b56d0d846.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1Y3oxMjIxNDA3Mjk_size_16_color_FFFFFF_t_70 6]: /images/20211109/e1d84f9207b140a08f4ec88f3ccc8999.png [20190803193835147.png]: /images/20211109/9a8cc4fc00de443a8bda5ecc2b709fee.png [www.freecplus.net]: http://www.freecplus.net
还没有评论,来说两句吧...