输入年份,然后打印出该年的万年历,以及标识出当天日期。相似于linux下的cal -y结果。

public class Permanent {

public static boolean isLeapYear(int year){//能被4整除但不能被100整除。或者能被400整除

boolean leapYear = false;

if((year % 100 == 0 && year % 400 == 0)||(year % 100 != 0 && year % 4 == 0)){

leapYear = true;

}

return leapYear;

}

public static int countDays(int year){//选个基准2015年1月1日,星期四

int countDays = 0;

int beginYear =year > 2015 ? 2015 : year;

int endYear = year > 2015 ?

year : 2015;

for(int i = beginYear;i < endYear;i++ ){

if(isLeapYear(i)){

countDays += 366;

}else{

countDays += 365;

}

}

return countDays;

}

public static void showCaledar(int year){

int days = countDays(year);

int weekDay = days % 7;

if(year > 2015){

weekDay = (weekDay + 4) % 7;

}else{

weekDay = (11 -weekDay) % 7;

}

String[] monthLabels = new String[]{"January","February","March","April","May","June","July","August","September","October","November","December"};

String[] weekLabels = new String[]{"Sun","Mon","Tur","Wen","Thr","Fra","Sat"};

int[] monthDay = {31,28,31,30,31,30,31,31,30,31,30,31};

for(int i = 0;i < 12;i++){

System.out.println("\n"+monthLabels[i]);

for(String weekLabel : weekLabels){ //每一周的标签

System.out.print(weekLabel + " ");

}

System.out.println(); //下一行

for(int j = 0; j < weekDay; j++){//找到第一个日期

System.out.print(" ");

}

if(isLeapYear(year)){

monthDay[1] = 29;

}else{

monthDay[1] = 28;

}

for(int k = 1;k <= monthDay[i];k++){

if((k + weekDay - 1) % 7 == 0){

System.out.println();

}

if(k < 10){ //这里是对齐的问题

System.out.print(k + " ");

}else{

System.out.print(k + " ");

}

}

weekDay = (weekDay + monthDay[i]) % 7;

}

}

public static void main(String[] args) {

showCaledar(2014);

}

}

时间: 2024-12-27 07:46:09

输入年份,然后打印出该年的万年历,以及标识出当天日期。相似于linux下的cal -y结果。的相关文章

输入年份和天数计算出几月几号

//转换函数如下,其中通过指针同时向主函数传回月份和天数 void month_day(int year, int yearday, int *month, int *day){ //k月份,leap判断是否闰年(0非闰年1闰年) int k, leap; int tab[2][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30

依次将10个数输入,要求打印出其中最大的数

#include <stdio.h>void main(){ int j=0,k=0,max=0; printf("请输入十个数:\n"); scanf("%d",&j); max=j; for(;k<=9;k++) { scanf("%d",&j); if(j>max) { max=j; } } printf("十个数中最大的数是:%d\n",max); } 依次将10个数输入,要求打

根据输入的内容打印出菱形

/* 5 根据输入的内容打印出菱形 */ +(void)print:(NSInteger)count blankString:(NSString*)blankString flagString:(NSString*)flagString /* { NSMutableString * ptr = [[NSMutableString alloc]init]; for (NSInteger i = 0; i < count; i++) { for (NSInteger j = 0; j < coun

依据输入的内容打印出菱形

/* 5 依据输入的内容打印出菱形 */ +(void)print:(NSInteger)count blankString:(NSString*)blankString flagString:(NSString*)flagString /* { NSMutableString * ptr = [[NSMutableString alloc]init]; for (NSInteger i = 0; i < count; i++) { for (NSInteger j = 0; j < coun

JS 输入年份,再输入月份,弹出这个月有多少天?

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html> <script type="text/javascript"> var nian = Number(prompt("请输入年份&

【python学习】今天看看学习 %d ,%s, %f 等用法,下面的学习例子是说输入名字、年龄、工作,工资。并给出65岁退休还差多久的计算

今天看看学习 %d ,%s, %f 等用法.%d 是占位符整数,%s 是占位符,%f 是浮点数.下面的学习例子是说输入名字.年龄.工作,工资.并给出65岁退休还差多久的计算.重点在于用占位符来print (msg).后面附更多的备用. # __author__:"Gabriel Jason" # date: 2017-11-05 name = input("Name:") age = int(input("Age:")) job = input(

Java50道经典习题-程序19 输入行数打印菱形图案

题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案   *  *** ************ *****  ***   *分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 1 import java.util.Scanner; 2 public class Prog19 { 3 public static void main(String[] args) { 4 Sca

运算符和表达式 、 分支结构 输入年份和月份,输出该月的天数(使用switch-case)

思路:三个板块,A.二月比较特殊,平年的二月只有28天,而闰年的二月有 29 天: B.4.6.9.11月: C.其他1.3.5.7.8.10.12月. import java.util.Scanner; public class DayOfMonth { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入年份(例如:2012)&quo

实例1 -- 判断输入年份是否为闰年

闰年的条件: 能被4整除且不能被100整除的为闰年或能被400整除 则为闰年 java写法: --------------------------------------------------- import java.util.*; public class LeapYear{ public static void main(String[] args){ Syste.out.println("请输入年份:"); Scanner sc = new Scanner(System.in