本文共 2185 字,大约阅读时间需要 7 分钟。
最近,我在网上看到了一道题目:输入一个从1901年开始到今年截止的年份,判断该年份是否为闰年?
对于这个题目,大家应该不会陌生,很多人在学校就应该已经见过了。通常的做法是判断输入的年份是否满足下列两个条件之一:
1) 能够被4整除但不能被100整除。
2) 能够被400整除。
如果满足两个条件中的任意一个,那么该年份就为闰年。
程序流程如下图所示:
程序代码如下:
/*********************************************************************** 版权所有 (C)2015, Zhou Zhaoxiong。** 文件名称:JudgeLeapYear.c* 文件标识:无* 内容摘要:判断输入的年份是否是闰年* 其它说明:无* 当前版本:V1.0* 作 者:Zhou Zhaoxiong* 完成日期:20150422***********************************************************************/#include // 重定义数据类型typedef signed int INT32;typedef unsigned int UINT32;/*********************************************************************** 功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------* 20150422 V1.0 Zhou Zhaoxiong 创建***********************************************************************/INT32 main(){ UINT32 iYear = 0; printf("Please input a year: "); while (1) { scanf("%d", &iYear); if (iYear > 1900 && iYear
现在,我们换一种思路来考虑。1901年开始到今年截止的年份中,闰年为1904、1908、1912等等,它们之间相差4年。这样,我们就可以用某个年份作为基准,只要输入的年份与基准年份之间相差4年,那么就可以断定该年份为闰年。这里,我们选用1900年为基准,只要输入的年份与1900的差为4的整数倍,那么该年份就为闰年。
基于此思路,程序流程图如下:
程序代码如下:
/*********************************************************************** 版权所有 (C)2015, Zhou Zhaoxiong。** 文件名称:JudgeLeapYear.c* 文件标识:无* 内容摘要:判断输入的年份是否是闰年* 其它说明:无* 当前版本:V1.0* 作 者:Zhou Zhaoxiong* 完成日期:20150422***********************************************************************/#include // 重定义数据类型typedef signed int INT32;typedef unsigned int UINT32;/*********************************************************************** 功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------* 20150422 V1.0 Zhou Zhaoxiong 创建***********************************************************************/INT32 main(){ UINT32 iYear = 0; printf("Please input a year: "); while (1) { scanf("%d", &iYear); if (iYear > 1900 && iYear
不管是上面的哪种解决办法,程序本身并不复杂,但这样一种转换问题求解思路的想法却广泛应用于实际的软件开发工作中。也就是说,很多时候,实现软件需求的办法并非只有一个,我们要多思考、善于从不同的角度分析问题,这样才能够找到最佳的实现途径。