1-14作业我的思路是不是错了

1-14作业我的思路是不是错了

var year=prompt("请输入您的出生年份");

var month=prompt("请输入您的出生月份");

var date=prompt("请输入您的出生日期");

var sum;

function myFunction(){

if(year%4!=0){

if(month==1){

sum=date;

}else if(month==3||month==5||month==7||month==8||month==10||month==12){

sum=(month-1)*31+28+date;

}else{

sum=(month-1)*30+28+date;

}

}else{

if(month==1){

sum=date;

}else if(month==3||month==5||month==7||month==8||month==10||month==12){

sum=(month-1)*31+29+date;

}else{

sum=(month-1)*30+29+date;

}

}

var word='您的生日在'+year+'年是第'+sum+'天';

return word;

}

document.write(myFunction());

这样写算出来也不对,请老师指点一下

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好,如下图;添加的要在循环外添加,否则每循环一次,就会执行一次。

http://img1.sycdn.imooc.com//climg/5a65bbb10001230609500439.jpg

祝学习愉快~

  • 桃月的阿宅 提问者 #1
    这样算出来的值还是错的。。。
    2018-01-22 18:28:30
  • 桃月的阿宅 提问者 #2
    解决了,谢谢老师
    2018-01-22 18:29:44
好帮手慕糖 2018-01-22 17:45:30

你好,1、闰年判断条件不对,你不要逆着来,不好计算,顺着来,满足这个条件的话,就是闰年,例:

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

2、对于输入的年月日要进行取整,不取整的话,是字符串,相加的时候,会导致拼接。

3、sum这是前几个月的值,但是还要加上输入的这个月,已经过去的时间呀,例:

sum+date

祝学习愉快~

  • 提问者 桃月的阿宅 #1
    var year=parseInt(prompt("请输入您的出生年份")); var month=parseInt(prompt("请输入您的出生月份")); var date=parseInt(prompt("请输入您的出生日期")); var DayOfYear=[31,28,31,30,31,30,31,31,30,31,30,31]; var DayOfLeapYear=[31,29,31,30,31,30,31,31,30,31,30,31]; var sum=0; function myFunction(){ for(var i=0;i<month-1;i++){ if((year%4==0&&year%100!=0)||year%400==0){ sum=sum+DayOfLeapYear[i]+date; }else{ sum=sum+DayOfYear[i]+date; } } word='您的生日是'+year+'年的第'+sum+'天'; return word; } document.write(myFunction()); 月份是1值都为0了,后面的数字为什么算的还是不对啊。。。
    2018-01-22 18:17:09
好帮手慕糖 2018-01-22 15:37:28

你好,1、闰年的判断条件不够严谨,判断年份是否是闰年,需满足下列条件之一(两个条件同时存在,一个为真即可):

(1)    年份能整除4但是不能整除100

(2)    年份能整除400

2、思路也不能这么写哦,可以带入计算下:若输入的是闰年的8月份,计算的话,会执行这句,sum = (month - 1) * 31 + 29 + date;

那会是(8 - 1) * 31 + 29 + date;

但是,8月份之前,31天的只有1,3,5,7这四个月份。所以这样计算是不对的哦。

思路:计算日期时可以用我们所学的条件判断语句switch和else if去实现,比如:

当出生月分是1时,出生的第几天就是用户输入的日期;

当月份是2时,出生的第几天就是1月份的天数加上2月份出生的日期,以此类推。

这样去写你的思路会更加清晰,一步一步来。

祝学习愉快~

  • 提问者 桃月的阿宅 #1
    var year=prompt("请输入您的出生年份"); var month=prompt("请输入您的出生月份"); var date=prompt("请输入您的出生日期"); var DayOfYear=[31,28,31,30,31,30,31,31,30,31,30,31]; var DayOfLeapYear=[31,29,31,30,31,30,31,31,30,31,30,31]; var sum=0; function myFunction(){ for(var i=0;i<month-1;i++){ if((year%4!=0&&year%100==0)||year%400!=0){ sum+=DayOfYear[i]; }else{ sum+=DayOfLeapYear[i]; } } word='您的生日是'+year+'年的第'+sum+'天'; return word; } document.write(myFunction()); 还是写的不对。。。这个思路又哪里错了么
    2018-01-22 17:37:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师