老师要求用c语言写,但是我c语言学的不好,就用的java写。
//主函数
public static void main(String[] args) { System.out.println("请输入年份:"); Scanner scanner = new Scanner(System.in); int year = scanner.nextInt(); System.out.println("请输入月份:"); int month = scanner.nextInt(); System.out.println("请输入日"); int days = scanner.nextInt(); System.out.println("请输入1~5的数字选择您的功能:"); System.out.println("1.增加日期"); System.out.println("2.增加月份"); System.out.println("3.增加年份"); System.out.println("4.查看当前是本年的第几天"); System.out.println("5.查看两个日期之间的天数"); int number = scanner.nextInt(); switch (number) { case 1: new MarchFifthCalander3().DateAddDay(year, month, days); break; case 2: new MarchFifthCalander3().DateAddMonth(year, month, days); break; case 3: new MarchFifthCalander3().DateAddYear(year, month, days); break; case 4: new MarchFifthCalander3().DayInyear(year, month, days); break; case 5: new MarchFifthCalander3().Subtracty(year, month, days); break; } }
//判断是否是闰年 public boolean isleapyear(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { return true; } return false; }
//获得每个月的天数 public int getmonthnumber(int year, int month) { int monthnumber = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { monthnumber = 31; } else if (month == 2) { if (isleapyear(year)) { monthnumber = 29; } else { monthnumber = 28; } } else { monthnumber = 30; } return monthnumber; }
//功能1:增加日,日期变更
public void DateAddDay(int year, int month, int day) { System.out.println("请输入您要增加的日期:"); Scanner scanner = new Scanner(System.in); int add = scanner.nextInt(); if (add < 0) { System.out.println("输入的数字不能小于0"); DateAddDay(year, month, day); } day = day + add; while (day > getmonthnumber(year, month)) { month++; if (month > 12) { year++; month = month - 12; } day = day - getmonthnumber(year, month); if (day < getmonthnumber(year, month)) { break; } } System.out.println("当前" + year + "年" + month + "月" + day + "日"); }
//功能2:增加月,日期变更
public void DateAddMonth(int year, int month, int day) { System.out.println("请输入您要增加的月份:"); Scanner scanner = new Scanner(System.in); int add = scanner.nextInt(); if (add < 0) { System.out.println("输入的数字不能小于0"); DateAddMonth(year, month, day); } month = month + add; while (month > 12) { year++; month = month - 12; if (month <= 12) { break; } } System.out.println("当前" + year + "年" + month + "月" + day + "日"); }
//功能3:增加年,日期变更
public void DateAddYear(int year, int month, int day) { System.out.println("请输入您要增加的年份:"); Scanner scanner = new Scanner(System.in); int add = scanner.nextInt(); if (add < 0) { System.out.println("输入的数字不能小于0"); DateAddYear(year, month, day); } year = year + add; System.out.println("当前" + year + "年" + month + "月" + day + "日"); }
//功能4:查看当前日期处于本年的第几天
public void DayInyear(int year, int month, int day) { int sum = 0; for (int i = 1; i < month; i++) { sum = sum + getmonthnumber(year, month) + day; } System.out.println("当前是当年的第" + sum + "天"); }
功能5:查看两日期之间相距多少天
public void Subtracty(int year1, int month1, int day1) { System.out.println("请输入一个日期:年,月,日"); Scanner scanner = new Scanner(System.in); int year2 = scanner.nextInt(); int month2 = scanner.nextInt(); int day2 = scanner.nextInt(); if (year2 > year1 ) { int year3 = year2 - year1; int leapyearnumber1 = year3 / 4; if (isleapyear(year1) && isleapyear(year2)) { if ((month1 == 1 || month1 == 2 && day1 <= 28) && (month2) > 2) { leapyearnumber1 = leapyearnumber1 + 2; } else if ((month1 == 1 || month1 == 2 && day1 <= 28) && (month2) < 3) { leapyearnumber1 = leapyearnumber1 + 1; } else if (month1 > 2 && (month2 == 1 || month2 > 2)) { leapyearnumber1 = leapyearnumber1 + 1; } else leapyearnumber1 = leapyearnumber1 + 0; } if (isleapyear(year1) && !isleapyear(year2)) { if ((month1 == 1 || month1 == 2 && day1 <= 28)) { leapyearnumber1 = leapyearnumber1 + 1; } else leapyearnumber1 = leapyearnumber1 + 0; } if (!isleapyear(year1) && isleapyear(year2)) { if (month2 > 2) { leapyearnumber1 = leapyearnumber1 + 1; } else leapyearnumber1 = leapyearnumber1 + 0; } if (!isleapyear(year1) && !isleapyear(year2)) { leapyearnumber1 = leapyearnumber1 + 0; } if(month2>month1){ int sum1=0; for (int i = month1; i < month2; i++) { sum1 =sum1+ getmonthnumber(year2,i); } int sum = year3*365 + sum1 +leapyearnumber1+day2-day1; System.out.println("两天相距"+sum+"天"); } if(month2<month1){ int sum1 = 0; while(month1<=12){ sum1 = getmonthnumber(year1,month1); month1++; } for (int i = 1; i <month2 ; i++) { sum1= sum1+getmonthnumber(year2,i)+day2-day1; } int sum = year3* 365+sum1+leapyearnumber1; } if(month1==month2){ int add = day2 -day1; int sum =0; if(day1>day2){ sum = year3*365 +leapyearnumber1+(365-add); }else { sum = year3*365 +leapyearnumber1 +add; } System.out.println("两天相距"+sum+"天"); } } }