14C++循环结构-while循环(1)——教学
一、while语句
(第40课 儿歌《打老虎》)参考视频1
问题:试编一程序,在屏幕上输出1~5这几个数字。
今天,我们用while语句来编写这个程序。while语句的特点是先判断表达式,后执行语句。其一般形式为:
while(表达式)
语句;
当表达式的值为真(非0)时,就不断地执行循环体内的语句,所以while循环称为当型循环。while语句的执行过程如图

解决问题程序流程图:

注:while循环的循环体若由多个语句组成,则须将多个语句用“{}”括起来,成为一个复合语句。
英汉小词典:
while[wail]当··的候
二、死循环
(第41课 蜗牛与葡萄树)参考视频1
问题:“阿门阿前一棵葡萄树,阿嫩阿嫩绿的刚发芽,蜗牛背着那重重的壳呀,一步一步地往上爬···”有一棵光滑的葡萄树高17分米,一只蜗牛从底部向上爬,每分钟爬3分米,但每爬一分钟后都要休息一分钟,休息期间又要滑下1分米。
试编一程序,计算该蜗牛需要多少分钟才能爬到树顶。
用变量t表示蜗牛爬树时用的时间,i表示向上爬的分米数。流程图如图:

while(1)中条件是1,它的值永远为真,若在循环体中没有break语句来终止循环,则会形成死循环。一般情况下,编程中要尽量避免出现死循环,但在实际应用中,有时也需要用到死循环。在单片机、嵌入式编程中经常要用到死循环。
同时,不存在一种算法,能够判断任何程序是否会出现死循环。因此,任何编译系统都不做死循环检查。
三、枚举算法
(第42课 最小公倍数)参考视频1
问题:尼克和格莱尔两人每隔不同天数都要到雷锋馆去做义工。尼克3天去一次,格莱尔4天去一次。有一天,他俩恰好在雷锋相遇,问至少再过多少天他俩又会在雷锋馆相遇?
试编一程序,求出他俩下次相遇最小的天数。
这是求两个数的最小公倍数问题,最小公倍数一定是大数的倍数,先从中找出大的数,然后从大数的1倍、2倍、3倍··依次枚举,找到第1个也是小数倍数的数,这个数就是它们的最小公倍数。流程图如图:

当然也可以从较小的数的1倍、2倍、3倍……依次枚举,找到第1个也是大数倍数的数就是最小公倍数。但枚举的次数会变多,运行时间会变长。
四、辗转相除法
(第43课 最大公约数)参考视频1
问题:尼克有一根长15米的铁丝,格莱尔有一根长18米的铁丝,要把它们截成同样长的小段,不许剩余,每段最长有几米?试编一程序,求出每段最长的米数。
这是求最大公约数的问题。两根铁丝的长度分别用m和n表示,采用辗转相除法求最大公约数,其思路是:
(1)求m除以n的余数r。
(2)当r==0时,则n为最大公约数,输出n并结束程序;当r!=0,执行(3)。
(3)将n的值赋给m,将r的值赋给n;再求m除以n的余数r。
(4)转到第2步。流程图如图:

测试数据
输入数据:49 14
输出数据:7
输入数据:36 18
输出数据:6
输入数据:55 20
输出数据:5
输入数据:100 25
输出数据:25
输入数据:120 48 112 64
输出数据:24

浙公网安备 33010602011771号