八直到。。。一直。。。 记得算识字量的程序么?如果要算10年,难道必须重复10行识字量(1每年翻倍数)识字量;吗?用脚趾想也不可能吧。 在写代码之前,不妨先构思一下该怎么算。这里多了一个输入值:年限。照原来的思路应该是:每过一年增加一次识字量,直到过了10年。这样就需要记着过了多少年。之前提到,一个变量用来记变化的值最合适:for(int年份0;年份年限;年份年份1){识字量(1每年翻倍数)识字量;} 上面的代码反映了我们的思路:1变量年份初始值是02如果它小于10,说明没到10年,那么就运行{}的内容,增一次识字量;如果到了10年,就结束循环3年份加一,继续执行第2步 同样的循环用while的格式来写是这样:int年份0;while(年份年限){识字量(1每年翻倍数)识字量;年份年份1;} 看起来for循环更紧凑,也更不容易写错。while循环里,如果忘写了年份年份1;,可就有趣了,因为年份没有增加,循环中止条件一直不能满足(0永远小于年限),代码运行停不下来,俗称死循环。而for循环里因为定了(初始化;循环条件;累加或递减执行语句)的格式,少了一项会很扎眼。 如果想要提前结束循环,可以用break。想知道过几年能认识中文的常用三千字的话: break执行后,它所在的循环就被打断,程序从循环之后开始执行。 如果想要循环继续执行,但是跳过循环内的部分代码,可以用continue。一个牵强的例子,如果从第三年才开始认识新字(比如在国外呆了三年):for(int年份0;年份年限;年份年份1){if(年份3){}识字量(1每年翻倍数)识字量;} 注:有更简短的实现方法,这个例子只为了演示continue的用处。恭喜!至此控制流介绍完了。 敬请期待后续,关注本号用中文编程!如需文字版教程,请联系我。