作业题计算自己的生日是该年中第几天

作业题计算自己的生日是该年中第几天

function date(){

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

if(num1%4=0){

break;

}else if(num1%4!=0){

}

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

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


}

写不下去了  不会?????怎么写代码

正在回答 回答被采纳积分+1

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

4回答
胖头鱼yyf 2018-08-14 17:06:20

<script>

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

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

   var day=parseInt(prompt("请输入出生日期"));

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

     day++;

   }

   var i,sum=0;

    var num=[31,28,31,30,31,30,31,31,30,31,30,31];

    for (i=0;i<month-1;i++) {

    sum+=num[i];}

    document.write("你的生日在"+year+"的第"+(sum+day)+"天");

</script>


骰子流 2018-08-14 16:22:11
var useryear=prompt("请输入您的出生年份");
    var usermonth=prompt("请输入您的出生月份");
    var userday=prompt("请输入您的出生日期")
    var daysort=[31,28,31,30,31,30,31,31,30,31,30,31];
    var r=0;
    function add(){console.log(!(useryear%4));
         if(useryear%4){
           daysort[1]=28;
            }else{ 
           daysort[1]=29;
                }
            for(var s=0;s<usermonth-1;s++){
                r=r+daysort[s];
            }
            r=r+parseInt(userday);
            //console.log(r);
        return  r;
    }
    
    var ss=parseInt(add());
    
    //var zs=document.getElementById("boxshadow-multi");
    //zs.innerHTML=ss;
    document.write("您出生在"+useryear+"在第"+ss+"天");


  • 你这个代码有些问题哦:判断是否为闰年有两个条件: (1)能被4整除,不能被100整除 (2)能被400整除 并且闰年的2月份有29天,平年的2月份有28天,正好写反了哦。参考: if (useryear % 4 && useryear % 100 != 0 || useryear % 400 == 0) { daysort[1] = 29; } else { daysort[1] = 28; } 自己测试下。
    2018-08-14 16:31:27
  • 好的,谢谢老师
    2018-08-14 16:51:43
怎么都被占用了呢 2017-10-27 18:52:00

你写的有些繁琐了

应该定义一个变量,用来存放最后的天数结果。

先判断是否是闰年,如果是,直接将数组的2月份修改为29天

遍历月份,累加天数的时候就不需要判断闰年了,将每月的天数累加在定义的变量上

最后加上输入的日期数即可

http://img1.sycdn.imooc.com//climg/59f30fcd000183c211060450.jpg

  • 提问者 慕丝7347533 #1
    谢谢老师,当时没想到可以这么简单。但是我还是想问我之前的代码错哪了,为什么显示不出来,审查元素也没显示错,但就是屏幕显示不出来
    2017-10-28 13:13:36
  • 提问者 慕丝7347533 #2
    老师在不?????帮忙回答下呗,!!!!!
    2017-10-30 08:50:45
怎么都被占用了呢 2017-10-11 10:18:18

给你一个思路吧,最好自己动手试试。

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

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

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

还有一种算法比较简单的:

2、定义一个平年(或闰年)的数组,数组中存在的是所有月份对应的天数,进行累加计算,直到加到我们获取到的月份为止。然后判断是否为闰年,若为闰年且月份大于2月,则在总的天数上加1;

数组的下标是从0开始的,若i小于等于month-1的话,就会把输入得当前月份,按照完整月份加上,实际这个月还没过完,是不能加的;建议:i小于month-1即可

建议2月份先按照28天计算,最后判断一下年份是否为闰年,如果是,最后的累加结果在加上1天,如果不是,就无需加1了

闰年的条件:

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

(2)       年份能整除400


  • 提问者 慕丝7347533 #1
    var arr=[31,28,31,30,31,30,31,31,30,31,30,31];//定义一个平年的数组 var year=Number(prompt("请输入自己的出生年份")); var month=Number(prompt("请输入自己的出生月份")); var date=Number(prompt("请输入自己的出生日期")); for(var i=0;i<month-1 ;i++){//i<month-1,因为i 是从0开始的并且输入该月份,实际上还没过完,所以得小于month-1 newstr+=arr[i]; //数组中累加计算 if((year%4==0&&year%100!=0)||year%400==0){ if(month>3){ var days=newstr+date+1; }else if(month=2&&date<29){ var days=newstr+date; }else if(month=2&&date==29){ var days=newstr+1; } document.write("自己的生日是一年中的第"+days+"天"); } document.write("自己的生日是一年中的第"+days+"天"); } 老师帮我看下哪里错了???为什么显示不出来
    2017-10-27 14:50:18
  • 清丶辞 回复 提问者 慕丝7347533 #2
    你在这个判断闰年里面再次进行的判断我不太理解,为什么month大于3的时候要用newstr+date+1?而且你的newstr也没有去声明啊?直接就用了?其实你在判断闰年里面判断了半天,其实无非就是如果是闰年的话,我就改变数组中下边为1的2月份天数为29天就ok了。
    2017-10-31 16:52:32
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
JavaScript基础入门 2018
  • 参与学习       547    人
  • 提交作业       206    份
  • 解答问题       640    个

JavaScript作为前端学习中的一个重要组成部分,本课程将带领你从最基础的语法开始,学习js的流程控制语句、函数、内置对象、DOM基础、DOM事件、BOM基础以及经典的js案例--轮播图。

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

在线咨询

领取优惠

免费试听

领取大纲

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