节假日
程序员文章站
2022-05-16 18:34:53
...
给定一个年份,计算这一年的假期。
双休:2天
阳历:元旦: 1.1 一天
劳动节 5.1 一天
国庆节 10.1 三天
圣诞节 12.5 三天
阴历:春节 1.1 三天
清明节 4.4-4.6某一天 一天
端午节 5.5 一天
中秋 8.15 一天
给出阴历节日的阳历日期,最后一个数字是1.1日星期几,计算全年假期。
样例输入:
2017
1 28
4 4
5 30
10 4
7
输出:
113
代码如下:
import java.util.Scanner;
public class L8 {
public static int[] day = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int y = sc.nextInt();
int[] mm = new int[10];
int[] dd = new int[10];
mm[0] = 1;
dd[0] = 1;
mm[1] = 5;
dd[1] = 1;
mm[2] = 10;
dd[2] = 1;
mm[3] = 10;
dd[3] = 2;
mm[4] = 10;
dd[4] = 3;
mm[5] = 12;
dd[5] = 25;
for (int i = 6; i <= 9; i++) {
mm[i] = sc.nextInt();
dd[i] = sc.nextInt();
}
int w = sc.nextInt();//w表示星期几
if ((y % 100 != 0 && y % 4 == 0) || y % 400 == 0)
day[2]++;
int m = 1, d = 1, sf = 0, ans = 0;//sf春节假期,ans计数,m月,d日
while (m < 13) {
if (m == mm[6] && d == dd[6]) {//春节
ans++;
sf = 2;
} else if (sf != 0) {
ans++;
sf--;
} else if (w == 6 || w == 7) {
ans++;
} else {
for (int i = 0; i < 10; i++) {
if (m == mm[i] && d == dd[i]) {
ans++;
break;
}
}
}
d++;
if (d == day[m] + 1) {
d = 1;
m++;
}
w++;
if(w==8)
w=1;
}
System.out.println(ans);
}
}
上一篇: 二叉树:度为2的结点个数、叶子结点的个数、结点的个数
下一篇: Vue:学习笔记(七)-自定义指令