判断输入年份是否为闰年的另一种方法

简介: 最近,我在网上看到了一道题目:输入一个从1901年开始到今年截止的年份,判断该年份是否为闰年?对于这个题目,大家应该不会陌生,很多人在学校就应该已经见过了。

最近,我在网上看到了一道题目:输入一个从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 
  
  

 

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

 

 

目录
相关文章
|
安全 数据挖掘 API
《区块链公链数据分析简易速速上手小册》第4章:交易数据分析(2024 最新版)(下)
《区块链公链数据分析简易速速上手小册》第4章:交易数据分析(2024 最新版)(下)
298 1
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引:详细技巧与方法
在数据库管理中,索引是提高SQL查询性能的重要手段
2345 5
|
Java fastjson Apache
【数据安全】数据脱敏方案总结
【数据安全】数据脱敏方案总结
908 1
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
1731 0
|
SQL 分布式计算 资源调度
Hive 优化总结
Hive优化主要涉及HDFS和MapReduce的使用。问题包括数据倾斜、操作过多和不当使用。识别倾斜可通过检查分区文件大小或执行聚合抽样。解决方案包括整体优化模型设计,如星型、雪花模型,合理分区和分桶,以及压缩。内存管理需调整mapred和yarn参数。倾斜数据处理通过选择均衡连接键、使用map join和combiner。控制Mapper和Reducer数量以避免小文件和资源浪费。减少数据规模可调整存储格式和压缩,动态或静态分区管理,以及优化CBO和执行引擎设置。其他策略包括JVM重用、本地化运算和LLAP缓存。
550 4
Hive 优化总结
|
存储 算法 Java
加密解密(3DES)DES的加强版
加密解密(3DES)DES的加强版
|
监控 安全 Linux
Linux 查看资源占用top参数详解
Linux 查看资源占用top参数详解
247 1
|
运维 安全 网络安全
网络安全规划实践
网络安全规划实践
450 0
|
Ubuntu 计算机视觉 C++
在Ubuntu系统上安装OpenCV C++
在Ubuntu系统上安装OpenCV C++
1419 0