蓝桥杯 时间问题

Link一个不错的Java组历届题解

时间问题解法:

1.利用Excel

2.Java的Calendar类

3.时间差模板

1.2018蓝桥杯JavaA组2-星期一(利用Excel):https://blog.csdn.net/guanghuichenshao/article/details/79781039 

2.如果时间在1970.1.1之后可以使用Java自带的Calendar类计算日期。

比如:

2013蓝桥杯JavaA组1-世纪末的星期

世纪末的星期
题目:
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 
于是,“谣言制造商”又修改为星期日......
1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?


请回答该年份(只写这个4位整数,不要写12月31等多余信息)

import java.util.Calendar;
import java.util.Scanner;

public class Main {

    static Scanner sc = new Scanner(System.in);
    
    public static void main(String[] args) {
        
        Calendar cal = Calendar.getInstance();
        for(int i=1999;i<=9999;i+=100) {
            cal.set(Calendar.YEAR, i);
            cal.set(Calendar.MONTH, 11);  //12月
            cal.set(Calendar.DATE, 31);
            int w=cal.get(Calendar.DAY_OF_WEEK);
            if(w==1) {      //星期天为1、星期一为2...星期六为7
                System.out.println(i);
                break;
            }
        }
    }
}

3.时间差:蓝桥杯常考题板。。

#include<stdio.h>
int main()
{
    int n,y1,m1,d1,y2,m2,d2,c1,c2,i,j,k;
    int a[2][12]={{0,31,28,31,30,31,30,31,31,30,31,30},
                  {0,31,29,31,30,31,30,31,31,30,31,30}};
    scanf("%d",&n);
    for(k=1;k<=n;k++){
        scanf("%d%d%d%d%d%d",&y1,&m1,&d1,&y2,&m2,&d2);
        c1=0;c2=0;
        for(i=1;i<y1;i++){
            if(i%4==0&&i%100!=0||i%400==0) c1+=366;
            else c1+=365;
        }
        for(i=1;i<m1;i++){
            if(y1%4==0&&y1%100!=0||y1%400==0) c1+=a[1][i];
            else c1+=a[0][i];
        }
        c1+=d1;
        for(i=1;i<y2;i++){
            if(i%4==0&&i%100!=0||i%400==0) c2+=366;
            else c2+=365;
        }
        for(i=1;i<m2;i++){
            if(y2%4==0&&y2%100!=0||y2%400==0) c2+=a[1][i];
            else c2+=a[0][i];
        }
        c2+=d2;
        printf("%d
",c2-c1);
    }
    return 0; 
}
原文地址:https://www.cnblogs.com/yzm10/p/7191493.html