博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断输入年份是否为闰年的另一种方法
阅读量:6093 次
发布时间:2019-06-20

本文共 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

 

不管是上面的哪种解决办法,程序本身并不复杂,但这样一种转换问题求解思路的想法却广泛应用于实际的软件开发工作中。也就是说,很多时候,实现软件需求的办法并非只有一个,我们要多思考、善于从不同的角度分析问题,这样才能够找到最佳的实现途径。

 

 

你可能感兴趣的文章
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
java 中getDeclaredFields() 与getFields() 的区别
查看>>
熟练掌握doc命令下的文件操作
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
Java 内存区域和GC机制
查看>>
更新代码和工具,组织起来,提供所有博文(C++,2014.09)
查看>>
HTML模块化:使用HTML5 Boilerplate模板
查看>>
登记申请汇总
查看>>
Google最新截屏案例详解
查看>>
2015第31周一
查看>>
2015第31周日
查看>>
在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。...
查看>>
PHP使用DES进行加密和解密
查看>>
Oracle 如何提交手册Cluster Table事务
查看>>