本帖最后由 夜色星空 于 2017-1-16 21:14 编辑
机器的一个特点
就是用来执行一些重复性高的事情的
这一点在工业领域尤为显著
假设:我想输出十组“hello world!”
有一个办法
调用十次printf()函数
这个可以
但是,我要调用一万次
你还能一行一行的输代码吗?
这也就体现了循环的必要性
循环分两种,当型与直到型
其代表分别是
while();
for(;;);
与
do-while;
先介绍一下当型
while(表达式){语句块}
乍一看与条件语句没什么区别
但它有一个条件语句没有的功能
执行完语句块后再判断表达式
若为真则继续执行语句块
如:
当a=10时,语句不执行,一共十句
这样写大大缩短了代码长度
问:如果去掉a++;会怎样?
答:那么a一直等于0,形成死循环,逻辑不通(切记要避免,容易死机)
使用循环语句时,切记使程序可以跳出循环
比如上面的例子,我用a来限制循环次数
再来说说for(;;)语句
其格式如下
for(语句1;表达式;语句2){程序块}
此语句先执行语句1
然后判断表达式
若为真,执行程序块和语句2然后再判断表达式(注意:语句1并不执行)
若为假,跳出循环。
如:
效果一样,与刚才的while相比,只不过是把赋值语句和自加自减移入了括号中使程序看起来更简洁
举个例子:
问:a=?
答:0
原因:即使表达式为假,但语句1已执行,所以为0
当型,告一段落
接下来是直到型
典型代表
do{程序块}while(表达式);
它的执行顺序是
先执行程序块,然后再判断表达式
若为真,则继续执行程序块
若为假,则向下执行
如:
为了便于阅读,我加了一句条件语句
这也就是课本上所谓的嵌套语句
就是在语句块中写语句
至此,C语言中的逻辑语句基本结束
下面说一下循环语句的两个关键字
break与continue
先说break
在前章使用switch()时曾用到过
当时说它的作用是跳出switch()语句
同理
它在循环当中作用是跳出当前循环
什么是当前,就是机器正在执行的循环
如:
(在此说一下,如果条件或循环语句后只跟一个语句时,花括号可以省略不写)
这个程序说明了,当a==5时执行了break,跳出了for循环
再举一个例子
看到没,这就是说我为什么说它只能跳出当前循环
使用一次,只能跳出一层
再来说说continue
这个关键字,表示只能跳出一次循环
什么叫一次
如图:
没有5,对吧,因为这一次循环跳过了
再看一个例子
问:为什么又有5了?
答:因为先打印了一个5,然后执行了continue
为了更直观
如图
也就是说,如果遇到continue
其向下的语句都不执行并且返回去验证循环表达式是否成立
进而判断是否循环
小结:编写一个密码程序(含容错机制)
答案:见附件。(因为发不了源代码,所以只发了txt,把扩展名改成.c就可以运行了)
(你要是一不小心点开了txt文件,你会有惊喜,我在前章准备环节说过,没有编译器,也可以写代码,这就是原因)
|