Faith


私信TA

用户名:1310510120

访问量:39721

签 名:

求介绍工作

等  级
排  名 229
经  验 6066
参赛次数 1
文章发表 54
年  龄 0
在职情况 学生
学  校 武汉生物工程学院
专  业

  自我简介:

解题思路:
1.找到这一年一月份是从星期几开始,计算方法求365或366的余数即可
2.计算这个月之前有多少天,计算出这个月从星期几开始,
3.输出记得到了星期6换行,最后一行不换行


注意事项:





参考代码:

import java.util.Scanner;

public class 任意年月日历输出 {

	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);
		int year=in.nextInt();
		int month=in.nextInt();
		int y=2007;int m=1;int week=1;
		while(y<year){
			if((y%4==0&&y%100!=0)||y%400==0)//闰年366天
			{week=week+366%7;}//下一年一月份开始从星期week开始。
			
			else week=week+365%7;
			y++;
		}
		System.out.println("---------------------");
		System.out.println(" Su Mo Tu We Th Fr Sa");
		System.out.println("---------------------");
	//计算这个月之前有多少天
		int temp=0;
		while(m<month){
		if(m==1)temp=31;
		if(m==2){
			if(((y%4==0&&y%100!=0)||y%400==0)) temp+=29;
				else temp+=28;
			}
		if(m==3)temp+=31;
		if(m==4)temp+=30;
		if(m==5)temp+=31;
		if(m==6)temp+=30;
		if(m==7)temp+=31;
		if(m==8)temp+=31;
		if(m==9)temp+=30;
		if(m==10)temp+=31;
		if(m==11)temp+=30;
		if(m==12)temp+=31;
		m++;
		}
		week=(week+temp%7)%7;//计算这个月第一天星期数
			int day=1;temp=-1;//因为第一个输出是星期日
			
			if(((y%4==0&&y%100!=0)||y%400==0)&&m==2){//当这年是闰年且是二月份
				while(++temp<week){System.out.print("   ");}
				System.out.printf("%3d",day);week++;
				while(++day<=29){
					System.out.printf("%3d",day);
					if(week==6&&day!=29)System.out.println();
					
					week++;week=week%7;
				}
			}
			else if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
				
				while(++temp<week){System.out.print("   ");}
				System.out.printf("%3d",day);week++;
				while(++day<=31){
					System.out.printf("%3d",day);
					if(week==6&&day!=31)System.out.println();
					week++;week=week%7;
				}
			}
			else if(m==4||m==6||m==9||m==11){
				while(++temp<week){System.out.print("   ");}
				System.out.printf("%3d",day);week++;
				while(++day<=30){
					System.out.printf("%3d",day);
					if(week==6&&day!=30)System.out.println();
					week++;week=week%7;
				}
			}
			else{
				while(++temp<week){System.out.print("   ");}
				System.out.printf("%3d",day);week++;
				while(++day<=28){
					System.out.printf("%3d",day);
					if(week==6&&day!=28)System.out.println();
					
					week++;week=week%7;
				}
			}
			System.out.println();
			System.out.print("---------------------");
		
		 
	}

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区