【C语言_判断是否为闰年】我学到了这些~闰年的判断实现方式

关于 ARTS 的释义 —— 每周完成一个 ARTS:
● Algorithm: 每周至少做一个 LeetCode 的算法题
● Review: 阅读并点评至少一篇英文技术文章
● Tips: 学习至少一个技术技巧
● Share: 分享一篇有观点和思考的技术文章

一、问题

如何判断是否为闰年?

  1. 什么是闰年?
    百度百科告诉我们

阳历和阴历中有闰日的年份,或阴阳历中有闰月的年份。如公历2020年为闰年,全年366天;农历庚子年(2020年)为闰年,闰四月小,该月只有芒种,无中气,全年13个月。伊斯兰教历1428年(公历2007——2008),全年366天为闰年。
1582年以来公历的置闰规则:
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
—百度百科

总而言之,言而总之 ,能被4整除,但不能被100整除的年份为闰年;
能被100整除,且必须能被400整除的年份才为闰年。

  1. 数学上/生活上我们判断/断定是闰年?
  • 能被4整除,但不能被100整除的年份为闰年;
  • 能被100整除,且必须能被400整除的年份才为闰年。
  1. 怎么从逻辑思维转化成代码实现?
  • 自定义函数
  • 掌握清楚核心判断逻辑
  • 编写核心逻辑
  • 多种不同实现方法

代码实现

方法一 / way 1

条件判断语句。(一个if…else…)

就是通过以下逻辑/算法实现该问题:

  • 普通年份: 能被4整除,但不能被100整除的年份为闰年;
  • 世纪年份: (当年份为 整百倍时)能被100整除,且必须能被400整除的年份才为闰年。
    闰年是指公历年份中有366天的年份。判断一个年份是否为闰年可以根据以下规则:

如果该年份能被4整除,但不能被100整除,则是闰年。 如果该年份能被400整除,则也是闰年。 其他情况下,该年份不是闰年。


简单流程描述: 一个简单的判断闰年的流程:
  1. 开始
  2. 输入年份
  3. 如果年份能被400整除,则跳到步骤6
  4. 否则,如果年份能被4整除且不能被100整除,则跳到步骤6
  5. 否则,年份不是闰年,跳到步骤8
  6. 年份是闰年 ,
    跳到步骤8
  7. 年份不是闰年
  8. 结束

具体实现如下:

#include 

// 自定义函数:判断是否后为闰年
// name : isLeapYear
// para : year
int isLeapYear(int year){
 	// 核心算法:
 	// 1.该年份是4的整数倍,但不是100的倍数
 	// 2. 该年份是100的倍数,且必须是400的倍数
 	// 或者说,当年份为百整数时,该年份必须为100的整数倍
 	if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
 		// 此时,我们就返回 1 说明是ture,也就是说 该年份是闰年
 		return 1;
	 		
 	} else {
 		// 反之,就返回0
 		return 0;	
	}
// 自定义函数结束
}

// 主函数
iint main(){
	int year;
	
	printf("请输入你要判断的年份:");
	scanf("%d", &year);

	if( isLeapYear(year) ){
		printf("%d is leap year,thanks!\n", year);
    } else {
        printf("%d is not leap year,sorry!\n", year);
    }
    return 0;
	
}

方法2

// 可以将自定义函数中的 return 1 改为 flag=1
// 做类似的判断,思维逻辑类似于way1

方法3

// 

// 

其中使用了逻辑运算符&& ||

&&逻辑与

在使用时,前后都须判断执行

||逻辑或

在使用时,若判读前者为否,则直接输出结果,不会再执行||后面的判断条件,

优先级

&& > ||

你可能感兴趣的:({05}C语言,{03}数据结构与算法,c语言,开发语言,c#,intellij-idea,算法)