zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法提高 5-3日历

    算法提高 5-3日历
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      已知2007年1月1日为星期一。设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。为完成此函数,设计必要的辅助函数也是必要的。
    样例输入
    一个满足题目要求的输入范例。
    例:

    2050 3
    样例输出
    与上面的样例输入对应的输出。
    例:
    在这里插入图片描述
    数据规模和约定
      输入数据中每一个数的范围。
      例:年 2007-3000,月:1-12。

    import java.util.Scanner;
    
    
    public class 日历 {
    	public static boolean isLeap(int year) {
    		boolean flag = false;
    		if(year % 4 == 0 && year % 100 != 0)
    			flag = true;
    		else if(year % 400 == 0)
    			flag = true;
    		else
    			flag = false;
    		return flag;
    	}
    	public static int getDay(int month, int year) {
    		int day = 0;
    		if (month == 2) {
    			if (isLeap(year)) 
    				day = 29;
    			else 
    				day = 28;
    		} else if (month < 8) {
    			if(month % 2 == 0)
    				day = 30;
    			else
    				day = 31;
    		} else {
    			if(month % 2 == 0)
    				day = 31;
    			else
    				day = 30;
    		}
    		return day;
    	}
    	public static int getFirst(int month, int year) {
    		int first = 0;
    		int distance = year - 2007;
    		int day = 0;
    		
    		while (distance / 4 >= 1) {
    			day += (365 * 4 + 1);
    			distance -= 4;
    		}
    		int count = 0;
    		while (distance > 0) {
    			if (count == 1) 
    				day += 366;
    			else
    				day += 365;
    			count++;
    			distance--;
    		}
    		int fre = 0;
    		if(isLeap(year))
    			fre = 31 + 29;
    		else
    			fre = 31 + 28;
    		int mon[] = {0, 0, 31, fre, fre+31, fre+61, fre+92, fre+122, fre+153, fre+184, fre+214, fre+245, fre+275};
    		day += mon[month];
    		first = day % 7;
    		return first+1;
    	}
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int year = sc.nextInt();
    		int month = sc.nextInt();
    		sc.close();
    		
    		if(year < 2007)
    			return;
    		
    		int day = getDay(month, year);
    		int firstDay = getFirst(month, year);
    		
    		if(month < 10)
    			System.out.println("Calendar " + year + " - 0" + month);
    		else
    			System.out.println("Calendar " + year + " - " + month);
    		for (int i = 0; i < 21; i++) 
    			System.out.print("-");
    		System.out.print("
    ");
    		System.out.println("Su Mo Tu We Th Fr Sa ");		
    		for (int i = 0; i < 21; i++) 
    			System.out.print("-");
    		System.out.print("
    ");
    		int count = 0;
    		if(firstDay != 7)
    			for (int i = 0; i < firstDay; i++) {
    				System.out.print("   ");
    				count++;
    			}				
    		for (int i = 1; i <= day; i++) {
    			if(i < 10)
    				System.out.print(" " + i + " ");
    			else
    				System.out.print(i + " ");
    			count++;
    			if(count % 7 == 0)
    				System.out.print("
    ");
    		}
    		System.out.print("
    ");
    		for (int i = 0; i < 21; i++) 
    			System.out.print("-");
    	}
    
    }
    
    
  • 相关阅读:
    重拾vue1
    sublime text3添加到右键菜单open with sublime text3
    打造最强一款windows最强终端
    Windows下强大的包管理工具Scoop,安装软件一个命令全搞定
    SpringBoot通过proguard-maven-plugin插件进行实际项目代码混淆,实测可用
    贡献一个springboot项目linux shell启动脚本
    springboot2.x基础教程:集成spring-data-jpa
    springboot2.x基础教程:集成mybatis最佳实践
    springboot2.x基础教程:过滤器和拦截器详解
    springboot2.x基础教程:SpringCache缓存抽象详解与Ehcache、Redis缓存配置实战
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079019.html
Copyright © 2011-2022 走看看