打印日历

输入年份,月份,打印出该月日历表。

:日历表从2000年起始。

package repeat_job1;

public class Calendar {
	public Calendar(){}
	private int []a={366,365,365,365};
	public int number_Days(int m,int n)
	{
		int num1=((m-2000)/4)*1461;
		int num2=0,sum_days=0;
		for(int i=0;i<(m-2000)%4;i++)
		{
			num2+=a[i];
		}
		sum_days=num1+num2+number_Day(m,n);
		return sum_days;
	}
	public int leapyear(int m)
	{
		if((m%4==0&&m%100!=0)||m%400==0)
		{
			return 29;
		}
		else
		{
			return 28;
		}
	}
	public int number_Day(int m,int n)
	{
		int r=0;
		switch(n)
		{
		case 12:r+=30;
		case 11:r+=31;
		case 10:r+=30;
		case 9:r+=31;
		case 8:r+=31;
		case 7:r+=30;
		case 6:r+=31;
		case 5:r+=30;
		case 4:r+=31;
		case 3:r+=leapyear(m);
		case 2:r+=31;
		case 1:r+=0;
		}
		return r;
	}
	public void print(int m,int n)
	{
		System.out.println("星期日"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"星期五"+"\t"+"星期六");
		int mod,day;
		mod=(1+number_Days(m,n))%7;//为什么加1?
		switch(mod)
		{
		case 2:System.out.print("");break;
		case 3:System.out.print("");break;
		case 4:System.out.print("\t");break;
		case 5:System.out.print("\t\t");break;
		case 6:System.out.print("\t\t\t");break;
		case 0:System.out.print("\t\t\t\t");break;
		case 1:System.out.print("\t\t\t\t\t");break;
		}
		if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
		{

			for(day=1;day<=31;day++)
			{
				mod=(number_Days(m,n)+day)%7;
				switch(mod)
				{
				case 2:System.out.print(" "+day);break;
				case 3:System.out.print("\t"+day);break;
				case 4:System.out.print("\t"+day);break;
				case 5:System.out.print("\t"+day);break;
				case 6:System.out.print("\t"+day);break;
				case 0:System.out.print("\t"+day);break;
				case 1:System.out.println("\t"+day);break;

				}
			}
		}
		else if(n==2)
		{
			for(day=1;day<=leapyear(m);day++)
			{
					mod=(number_Days(m,n)+day)%7;
					switch(mod)
					{
					case 2:System.out.print(" "+day);break;
					case 3:System.out.print("\t"+day);break;
					case 4:System.out.print("\t"+day);break;
					case 5:System.out.print("\t"+day);break;
					case 6:System.out.print("\t"+day);break;
					case 0:System.out.print("\t"+day);break;
					case 1:System.out.println("\t"+day);break;
					}
				}
			}
			else{
				for(day=1;day<=30;day++)
				{
					mod=(number_Days(m,n)+day)%7;
					switch(mod)
					{
					case 2:System.out.print(" "+day);break;
					case 3:System.out.print("\t"+day);break;
					case 4:System.out.print("\t"+day);break;
					case 5:System.out.print("\t"+day);break;
					case 6:System.out.print("\t"+day);break;
					case 0:System.out.print("\t"+day);break;
					case 1:System.out.println("\t"+day);break;
					}
				}
			}
	}
}

  

import repeat_job1.Calendar;
import java.util.Scanner;
public class Test2 {
    public static void main(String[] args)
    {
        Calendar ca=new Calendar();
        Scanner reader=new Scanner(System.in);
        System.out.println("请输入年份:");
        int m=reader.nextInt();
        System.out.println("请输入月份:");
        int n=reader.nextInt();
        reader.close();
        ca.print(m,n);

    }

}
时间: 2024-10-12 19:59:26

打印日历的相关文章

【Java自学】 打印日历信息

1 package codeTask_FangFa; 2 // 5.34 使用zeller公式,打印某年某月的日历信息. 3 import java.util.Scanner; 4 public class PrintRiLi { 5 public static void main(String[] args){ 6 Scanner input = new Scanner(System.in); 7 System.out.println("请输入需要打印日历的年份:"); 8 int

java打印日历方法

package cn.baokx.test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class Test { public static void main(String ... args) { String dat

自写打印日历类

在论坛上看到有人在问打印日历的程序,今天下午空闲的时候写了一个日历类,简单的写了几个方法. calendar.h #include <string> using namespace std; #ifndef CALENDAR_H #define CALENDAR_H class Calendar{ public: Calendar(){} void printAllMonth(const int &year); void printOneMonth(const int &yea

2.2打印日历实现输出某年某月

//打印日历实现输出某年某月 #include<iostream> #include<iomanip> #include<string> using namespace std; //判断平闰年 int doyear(int year) { if((year%4==0)&&(year%100!=0)||(year%400==0)) return 1; else return 0; } //判断某年的第一天是星期几 int doweek(int year)

使用java 打印日历

package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { public static int year = Integer.MIN_VALUE; public static int month = Integer.MIN_VALUE; private static int[] m = {31,28,31,30,31,30,31,31,30,31,30,31}; pu

C++实现的一个打印日历程序

C++实现的一个打印日历程序 说明:总共有三个文件 1.month.h为定义函数的头文件 2.month.cpp为函数的实现代码 3.mainprog.cpp为主函数的实现代码 month.h void printMonth(int year,int month); void printMonthTitle(int year,int month); void printMonthBody(int year,int month); int getStartDay(int year,int mont

Python实战练习——打印日历教程

很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日历打印器,并根据情况进行优化. 效果如上图所示 算法思路: 首先,关于日历的相关操作都离不开一个根本情况,1990年的1月1日是周一,所以日历的打印需要基于这一事实 想要打印日历需要解决的问题最主要便是一个——那就是本月1号是周几? 在没有更好的算法之前,最好用的方式就是根据接收的年月去累加,然后除

Calendar类,运用Calendar类打印日历

抽象类 Calendar 提供了一组方法,允许把以毫秒为单位的时间转换成一些有用的时间组成部分.Calendar 不能直接创建对象,但可以使用静态方法 getInstance() 获得代表当前日期的日历对象. Calendar类的方法可参考API(应用程序编程接口) Calendar类运用灵活,可获取时间和日期的各种表达形式.如下将时间往后推100天,得出年,月,日的时间格式.   Calendar s=Calendar.getInstance();     s.add(Calendar.DAY

打印日历的方法

日历的简单实现方法 package ClassDemo; import java.util.Scanner; public class PrintMonthlyCalindar { public static void main (String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入年:"); int year = sc.nextInt(); System.out.print("