文 | Edward

2 循环执行语句

计算机有一个强大的能力,快速地重复执行某一计算,这种重复计算多次的方法,是通过软件中的循环执行语句去实现的。C语言中实现循环语句结构的方式有三种,第一种为“for”循环,第二种为“while”循环,第三种为“do……while”循环。不管是那种循环,其循环的方式都是类似的,即在某一条件成立的情况下(为True,或者非0),某一范围内的某条或某几条语句就会被一次循环执行,循环执行语句的示意如图3-8-7所示。

图3-8-7 循环执行语句

(1)while循环

while语句的一般使用形式为:

while(判断条件)

{

执行语句;

}

其中判断条件可以为表达式,也可以是一个变量,只要表达式或者变量不为0,那么while后面的执行语句将一直被循环执行。如果while条件后面只跟随一句执行语句,那么while后面的一对“{}”可以不加。

例如,当我们需要连续打印出1到100的时候,用while语句即可轻松实现,其实现代码如图3-8-8所示。

图3-8-8 while循环打印

图3-8-8代码中,i定义完成之后,赋初值为1,“i <= 100”是一个判断条件,只要这个表达式为1,即条件成立,那么代码就一直会把“i”打印出来,而变量i每次在打印完成之后,就对自己加1,这样,当执行99次之后,i=100,此时“i <= 100”这个条件还是成立,进而再执行一次“i+1”,此时i=101了,再去判断“i<=100”已经不成立了,因此while循环最终退出。

当然,C语言在设计之初就设计了循环的退出机制,“continue”和“break”就是循环退出机制的两个关键词。这两个关键词虽然都可以使while循环中断退出,但是其效果和功能有着非常大的区别。“break”关键词是让整个while循环彻底退出,而“continue”关键词是让本次的循环中断运行,进而进行下一次while的循环以决定这个循环需不需要继续执行下去。关于“continue”关键词我们可以做一个简单的程序来说明一下其功能。如图3-8-9所示。

图3-8-9 continue关键词

这个程序的主体和图3-8-8中的代码一样,只不过加了一个判断条件,当i加到5的时候进行判断,直接给变量i赋值200,之后再运行continue语句,由于continue语句执行了,因此循环在此处就中断了,直接进行while条件的判断,而此时下面的printf语句也就不会被执行了。在while的判断下,发现此时“i <= 100”这个条件不成立了,因此退出了while循环。

利用while循环和continue的组合,我们还可以做很多有趣的程序,如,找出1~1000中所有能被3整除的整数。程序代码如图3-8-10所示。

图3-8-10 找出1000以内能被3整除的数

而break的语法就是直接退出整个while循环,我们可以写一个软件来验证这个while的用法,做一个键盘字符获取程序,程序平时一直在等待按键输入,并将按下的按键打印出来,直到当按下小写字符“k”的时候,程序打印出goodbye并且退出。如图3-8-11所示,此时while的判断条件是一个常数1,因此可以说while在任何情况下都不会退出,但是一旦当获取到的按键为“k”,此时if判断语句中的条件就成立,运行break语句,最终打印出good bye,并且退出while(1)这个循环。可能做纯软件的读者会觉得我这里的while(1)用的非常荒唐,再怎么样也要写一个退出条件比较考究,但是在很多的裸机系统中,就是通过一个while(1)的大循环使芯片里面的程序连续运行的。

图3-8-11 按键字符判断

(2)do……while循环

do……while语句,在一些书上也称作do语句,它很像while语句,只是它的运行条件判断,要在循环体执行完一次之后再去判断。所以,这种结构的循环体至少会被运行一次,下面是它的语法。

既然while和do……while的用法很相似,那我们如何在它们之间进行选择呢?

当需要循环体至少执行一次的时候,选择do。

比如,还是一个按键判断的程序,当输入的字符不为小写字母“k”的时候,将这个数字打印出来,如果是小写字母“k”就退出程序,打印出good bye。这个程序由于要求我们对输入的第一个字符就需要判断,因此在不用break和while(1)的情况下,我们可以直接使用do……while的形式来完成。其代码如图3-8-12所示。

图3-8-12 字符判断程序

(3)for循环

C语言中,for循环语句是while循环语句的一种简化方法,for语句的一般形式为:

通过上几小节的练习,我们发现一个规律,即有限次数的循环程序,一般都会定义一个控制循环次数的变量,而for循环语句中的表达式1为初始化部分,即我们可以对定义的这个控制循环次数变量进行初始化。表达式2为条件部分,当表达式2成立的时候(True,非0),for循环一直运行下去,一旦当表达式2的条件不满足,则退出for循环。表达式3为调整部分,它在每一次循环体运行完成一遍之后,都会执行表达式3。与while循环一样,在for语句中,也可以使用break语句和continue语句来中断循环。

如我们需要找出1~1000中所有能被3整除的整数,除了图3-8-10中用while循环的程序外,还可以用for语句来实现。如图3-8-13所示。

图3-8-13 for语句寻找能被3整除的数

图3-8-13,for语句后面的三个表达式分别为:

初始条件:i = 1;

判断条件:i <= 1000;

调整语句:i ++;这里的i可以根据需求自行调节。

循环控制语句后面我们在实际使用中会频繁用到,因此后面让我们来慢慢探索。

java while语句打印三角形_【连载】(循环执行语句while和if)乐创DIY C语言讲义——3.8节(3)...相关推荐

  1. c语言 判断一个图是否全连通_【连载】(判断执行语句)乐创DIY C语言讲义——3.8节(2)...

    2 判断执行语句 判断执行语句,执行时候会有一个条件判断,一旦当条件判断为真,即True的时候,就执行相应的语句,满足条件被执行的语句用大括号"{}"括起来.由于在C语言中没有用于 ...

  2. 程序实现switch语句判断年龄_【回顾】(选择执行语句if else和switch)乐创DIY C语言讲义——3.8节(4)...

    文    |    Edward 4 选择执行语句有些时候,我们希望程序既不顺序执行,也不只做单一的判断(代码运行还是不运行),很多时候,我们往往只希望对某一个条件的不同状态分别执行不同的语句,这样就 ...

  3. 乐创杯c语言大赛形式,【连载】(学了这么多年C语言,你真的了解static关键词吗)乐创DIY C语言讲义​——4.4节...

    文 | Edward 4.4 变量的补充 前面内容中,我们已经讨论了变量的定义,但是由于函数的概念还没有引入,因而这是不全面的,本节开始,我们再来补充一些变量的其他内容,这就相当于对变量这个概念的重新 ...

  4. java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  5. python循环语句打印三角形_如何使用python语言中的语句遍历循环生成三角形

    在python语言中,除了使用if语句,还可以使用while循环语句,利用多层循环生成不同的图形,如果在特殊位置中断,可以创建不同的图形.下面利用实例说明如何生成三角形,操作如下: 工具/原料 pyc ...

  6. python循环语句打印三角形_三角形最新:Python利用for循环打印星号三角形的案例_爱安网 LoveAn.com...

    关于"三角形"的最新内容 聚合阅读 这篇文章主要介绍了Python利用for循环打印星号三角形的案例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧... 这篇文章 ...

  7. Java打印三角形(双层for循环)

    Java打印三角形(双层for循环) 1.第一个三角形: 打印样式: 外层for循环控制行数,内层for循环控制"*"的个数 public static void demo01() ...

  8. java while语句打印三角形_java基础之五小节带你走进java流程控制—多重循环

    四.多重循环 在一个循环语句内部再嵌套一个或多个循环,称为多重循环/嵌套循环.while.do-while与for循环可以任意嵌套,可以嵌套任意多层.一般工作中多见的就是两层. 4.1 多重循环 打印 ...

  9. java while语句打印三角形_Java 循环结构

    for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: while 循环 do-whi ...

最新文章

  1. oracle 10g 用户管理笔记
  2. Building credit scorecards using SAS and Python
  3. 价值上亿元的IT机房,都有哪些设备?
  4. servlet多线程
  5. zigbee协议_智能家居的ZigBee到底是什么?和Wi-Fi有何区别?
  6. 导师带学生卡Bug,这波操作~
  7. mysql数据库内置函数大全_(MariaDB)MySQL内置函数大全
  8. html是什么型语言,HTML笔记
  9. java监听器演示样例
  10. OGNL表达式语言详解
  11. python实现搜狗新闻挖掘(一)
  12. ORA-29339: tablespace block size 32768 does not match configured block sizes
  13. onBlur和onChange冲突解决方法
  14. (附源码)node.js学生钟点工管理系统 毕业设计 290011
  15. SNARK超详细解释,从GGPR13到Groth16
  16. php ean13,php生成EAN_13标准条形码实例_PHP教程
  17. 手工安装oracle的JVM包
  18. python使用列表,快速获取1到10的平方
  19. 华为发布BB智能观影产品:Vision Glass
  20. C语言学习记录——鹏哥二分法查找数组中元素 复习整理

热门文章

  1. 怎样减大腿最快最有效
  2. PLSQL使用IP地址连接远程服务器
  3. gedit常用快捷键
  4. 自己动手给网站增加一个夜间模式
  5. 笑话-女老师和男学生在生理课上的经典对白
  6. 【CentOS】Spark 运行环境(Local、Standalone)
  7. (译) Cocos2d_for_iPhone_1_Game_Development_Cookbook:1.1绘制精灵
  8. 做一个极简生活主义者
  9. NEXON旗下的开发工作室
  10. Elasticsearch 实战 - 第三讲:ES 基本操作、批处理