(3)实验实例
1)我们经历过在ATM 机上取钱,当密码输入错误3 次,会提示请到银行处理,那么本实例就来模拟这个过程。
【程序分析】插卡之后,会看到第一次提示内容:“请输入您的银行卡密码”,输入密码后会进行比较,正确则继续,错误就会让用户再次输入密码,输入后再比较,如果还是错误,此时已经达到3 次了,系统不会再给重新输入的机会。
我们发现,在一直错误的这个过程中,其实可看作额外重复了第一次操作两次,只是变化了一些辅助的信息。像这种会执行多次相似的操作,如果每次都重新写一遍,会让代码显得非常冗余,此时就可以借助循环来实现。
先判断第1 次输入的密码是否正确,不正确进入循环再次判断,正确就提示登录成功。这种思路跟do-while 语句是非常吻合的。
本题需要已知一个密码,密码是6 位的,由于我们还未学习字符串的表达方式,这里就假定是1 个6 位整型数,又要统计错误的次数,则还需要一个计数变量。
【参考程序】


【运行结果】如图4-1所示。

图4-1 运行测试结果
2)编程实现,输入一个日期(如2019 -7 -11),计算出这个日期是当年的第几天。
【程序分析】程序思路比较简单,就是把1—6 个月的总天数求出来,借助循环依次遍历,然后再加上7月份的11 天,最后考虑一下这一年是不是闰年,如果是总值加1,否则不变。
由于闰年只是影响了2月份的天数,当输入的日期小于等于2 的时候,我们是没有必要去考虑闰年的问题。
之前在选择结构中留了这样一道题,可以这样去完成:

这样要一直持续到12月份,太麻烦了,来感受一下带循环的参考程序,你会感叹循环的优势。
【参考程序】

【运行结果】如图4-2所示。(https://www.daowen.com)

图4-2 运行结果
3)编程实现,输入两个日期,计算出两个日期之间相差的天数。图4-3 是从excel 算出来的结果。

图4-3 相差天数
【程序分析】判断输入的年份是不是闰年、年份是否相同、月份是否相同、日期是否相同?
同年同月最好计算,日数相减就出来了。
同年不同月也好计算,计算中间相隔几个月,转换成天数,小的日期距月底有多少天,大的日期距月初多少天,3 个数相加。
不同年的日期计算:先计算中间相隔几年,这几年的天数就出来了,再计算小的日期到年底有多少天,其次计算大的日期距年初有多少天,3 个数相加就可以了。
开始日期往后计算又换成了另外一个思路,又会让编程复杂起来。这里我们把开始日期这一年全部计算出来,再减去这个日期前面的年份。
①先计算年份之间的天数差距,不包括截止日期的那年。
②开始计算截止日期那年总共的天数。
③把开始日期之前的所有天数减去。
【参考程序】



【运行结果】如图4-4所示。

图4-4 结果显示