以我现在的水平,看到这道题: 写一个程序判定给定年份为闰年。
首先会想到的是,怎么样才是闰年?
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
那从上面我们就可以得知了以下内容:
语句1、如果 year (变量) 不能被100整除的同时,又能被4整除,就是闰年。
语句2、如果 year (变量) 能被400整除,就是闰年。
实际上为了优化这段代码,我们应该先判断语句2。
所以我们就得到了以下代码:
- if year % 400 == 0:
- return True
- elif year % 100 != 0 && year % 4:
- return True
- else:
- return False
复制代码
这就是这个作业的核心代码,也可以叫核心算法。
至于你问的如何转换这个思路到具体代码上,
我认为,在解决这种实际问题上,应该抓准自己的思路,
代码如何写其实不重要,重要的是你是否知道这个问题该怎么解决。
就像这个闰年的问题一样,当你知道了闰年的判断条件,你就很容易去将其转换成代码语句。
当然,前提是你的基础要打好。
在日后,你可能会遇到更复杂的代码需求,要求更复杂,精密,搞笑的算法代码来实现你所需要的功能。
也要把准,到底这个问题的最终判断在哪里? 比如怎么判断它是对的? 怎么判断它是错的? 怎么实现?
核心的内容并不在于 if .... else.... 这些语句, 而是在于它实际上是怎么流程。 所以当我们掌握多种语言以后,
我们可以用不同语言实现同样的功能,因为我们掌握了核心的内容,就是这个怎么样才算是闰年?
下面是一段C语言写的闰年检测函数,供你对比:
- int RunNian(int year)
- {
- if (year % 400 == 0 ) return 1;
- if (year % 100 != 0 && year % 4 == 0) return 1;
- return 0;
- }
复制代码