C语言如何判断某一年是不是是闰年

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何判断某一年是不是是闰年相关的知识,希望对你有一定的参考价值。

参考技术A

工具/材料

ubuntu

gcc + vim

    01

    开启ubuntu并在指定位置打开一个终端。

    02

    使用vim创建一个源文件runnian.c,并添加宏包含与函数声明,以及创建主函数。

    03

    首先判断年份能否被100整除。若能,则继续判断能否被400整除。若依然能被400整除则说明是闰年。

    04

    若不能被100整除,则接着判断能否被4整除。若能则说明是闰年,否则不是闰年。

    05

    接下来对这个函数进行测试。选取几个数字:2000,1900,1904, 1966,1987。测试代码如下。

    06

    编译运行后的输出如下,与我们的预期相同,说明编写的程序没有问题。

Java实例——判断某一年是否为闰年

技术关键:
    满足两种条件的整数可以成为闰年:
        1、非整百年份能被4整除;
        2、整百年份能被400整除。
 
Java语法:
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
 
实现过程:
 1 package test;
 2 import java.util.Scanner;
 3 public class LeapYear {
 4        public static void main(String[] args) {
 5              // TODO Auto-generated method stub
 6              Scanner scan = new Scanner(System.in);
 7              System.out.println("请输入一个年份:");
 8              long year = scan.nextLong();                                 //接收用户输入
 9              if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
10                     System.out.println(year + "是闰年!");
11              } else {
12                     System.out.println(year + "不是闰年");
13              }
14        }
15 }
后记:一开始不能理解为什么year % 100 != 0这个条件,毕竟整百年份除以100肯定等于0啊,百度了一下,看到这句话:
判定公历闰年遵循的规律为: 四年一闰,百年不闰,四百年再闰。
百年不闰!百年不闰!百年不闰!看到这个就明白过来了。
 
在该实例中有个扩展学习,判断指定日期间经过的天数
 
题:请尝试判断从2000年1月1日到2016年5月1日一共经历多少天。
书上没给答案,但我自己分析:有了前面实例判断某年是否为闰年在前,可以先判断2000~2016年平闰年,平年是365天,闰年是366天,用for循环相加即可。
 
实现过程:
 1 package test;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Calendar;
 6 import java.util.Date;
 7 
 8 public class CountDays {
 9     public static int differentDays(Date date1,Date date2) {
10         // TODO Auto-generated method stub
11         Calendar cal1 = Calendar.getInstance();
12         cal1.setTime(date1);
13         
14         Calendar cal2 = Calendar.getInstance();
15         cal2.setTime(date2);
16         
17         int day1 = cal1.get(Calendar.DAY_OF_YEAR);
18         int day2 = cal2.get(Calendar.DAY_OF_YEAR);
19         
20         int year1 = cal1.get(Calendar.YEAR);
21         int year2 = cal2.get(Calendar.YEAR);
22         
23         int days = 0;
24         for (int i = year1; i < year2; i++) {
25             if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {    //闰年
26                 days += 366;
27             } else {                                             //平年
28                 days += 365;
29             }
30         }
31         return days + (day2 - day1);
32     }
33 
34     /*
35      * 测试
36      */
37     public static void main(String[] args) {
38         String dateStr = "2000-1-1";
39         String dateStr2 = "2016-5-1";
40         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
41         try {
42             Date date1 = format.parse(dateStr);
43             Date date2 = format.parse(dateStr2);
44             System.out.println("2000年1月1日到2016年5月1日一共经历了:" + differentDays(date1,date2) + "天。");
45         } catch (ParseException e) {
46             e.printStackTrace();
47         }
48     }
49 }
 
运行结果如下图所示,一共经历了5965天。

我不放心,又用了最原始的方法,在纸上列出2010年至2016年5月1日的天数,相加后得到的结果确实是5965天。

以上是关于C语言如何判断某一年是不是是闰年的主要内容,如果未能解决你的问题,请参考以下文章

C语言实例第02期,判断某一年是否为闰年

用JAVA判断是不是是闰年

c语言判断一个年数是闰年还是平年,三种方法?

C语言如何判断是闰年,闰年判断条件

C语言程序(判断每月天数以及是不是为闰年)

闰年用c语言怎么写?