本帖最后由 syw02014 于 2014-2-24 20:09 编辑
这是一道 蓝桥杯题目,之前赛前联系时练过,直接给你代码(核心部分用函数写你):- public static int countDays(int year, int month, int day)
- {
-
- int[][] days={{31,28,31,30,31,30,31,31,30,31,30,31}, //闰年、平年每月的天数
- {31,29,31,30,31,30,31,31,30,31,30,31}};
- int index=year%4==0&&year%100!=0||year%400==0?1:0;//用index标识是什么年0:平,1:闰年
- if(year<1949||month<1||month>12||day<1||day>days[index][month-1])//判断输入日期是否正确
- return -1;
- int[] years ={365, 366};
- int otherDays=92; //1949-10-1到1950-1-1剩余的天数
- int count=0; //用于统计日期离1949-10-1有多少天
- if(1949==year) //如果输入year为1949
- {
- if(10<month)
- return -1;
- if(10==month)
- count=day--;
- else if(11==month)
- count=days[0][9]+day - 1;
- else if(12==month)
- count=days[0][9]+days[0][10]+day-1;
- }
- else //如果输入year大于1949
- {
- if(year-1949==1) //如果输入year等于1950
- {
- for(int i=0;i<month--;i++)
- count+=days[index][i];
- count+=otherDays+day-1;
- }
- else //如果输入year大于1950
- {
- for(inti=1950;i<year;i++)
- {
- int index2=i%4==0&&i%100!=0||i%400==0?1:0;
- count+=years[index2];
- }
- for(int i=0;i<month-1;i++)
- count+=days[index][i];
- count+=otherDays+day-1;
- }
- }
- return count;
- }
复制代码
|