首页 > 试题

闰年和平年

更新时间:2022-11-14 19:47:03 阅读: 评论:0

九上英语面对面答案-形容第一的词语


2022年11月14日发(作者:扶贫办)

算法题:输⼊年⽉⽇,输出该⽇期是当年的多少天

因为题⽬要求参数只能使⽤int,所以这⾥不讨论Java的⽇期特性.

思路分析:

⾸先闰年的年份2⽉为29天,平年2⽉为28天,所以要先判断输⼊的年份是闰年还是平年,判断⽅式是:如果年份能够被4整除但不能被

100整除,或者年份能被400整除,⼆者满⾜其⼀则为闰年,否则为平年,然后算出输⼊⽉份-1的总天数加上当前⽉份的天数,即得到结

果。

代码分析:

如果完全使⽤if判断,判断当前年,在判断当前⽉计算的话,未免太繁琐,这⾥我们可以预先把闰年和平年每⽉的天数保存到数组中,循

环遍历,代码就会精简很多。

publicintgetdate(intyear,intmonth,intday){

int[]leapYear={31,29,31,30,31,30,31,31,30,31,30,31};

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

booleanisLeapYear=fal;

intdayNum=day;

if(year<=0||month<=0||month>12||day<=0||day>31){

return0;

}

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

isLeapYear=true;

}

for(inti=0;i

if(isLeapYear){

dayNum=dayNum+leapYear[i];

}el{

dayNum=dayNum+GapYear[i];

}

}

returndayNum;

}

另外还有⼀种⽅式,可以先按平年将前n-1个⽉份的的总天数算出来,采⽤switchca来判断当前⽉份,得到天数,加上当前天数,最后

判断⽉份是否⼤于2,如果是,在判断是否为闰年,如果为闰年则+1天,否则就只加上当前⽉的天数。参考代码如下:

publicintgetdate2(intyear,intmonth,intday){

intsum=0;

booleanisLeapYear=fal;

if(year<=0||month<=0||month>12||day<=0||day>31){

return0;

}

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

isLeapYear=true;

}

switch(month){

ca1:

sum=0;

break;

ca2:

sum=31;

break;

ca3:

sum=31+28;

break;

ca4:

sum=31+28+31;

break;

ca5:

sum=31+28+31+30;

break;

ca6:

sum=31+28+31+30+31;

break;

ca7:

sum=31+28+31+30+31+30;

break;

ca8:

sum=31+28+31+30+31+30+31;

break;

ca9:

sum=31+28+31+30+31+30+31+31;

break;

ca10:

sum=31+28+31+30+31+30+31+31+30;

break;

ca11:

sum=31+28+31+30+31+30+31+31+30+31;

break;

ca12:

sum=31+28+31+30+31+30+31+31+30+31+30;

break;

default:

n("请输⼊正确的⽉份.");

}

if(month>2){

if(isLeapYear){

sum=sum+day+1;

}el{

sum=sum+day;

}

}el{

sum=sum+day;

}

returnsum;

}

以上为⾃⼰学习记录,有问题的地⽅欢迎⼤家讨论指正。

本文发布于:2022-11-14 19:47:03,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/19625.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:饮食习惯英文
下一篇:拐点论
标签:闰年和平年
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图