• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

计算日期时结果总是不准确。这是什么原因?

include "iostream"using namespace std;int main(){    int year, month, day;    int days;    int sum;    cout > year;    cout > month;    cout > day;    cout > days;    switch(month)    {         case 1:        sum = 0;        break;        case 2:        sum = 31;        break;        case 3:        sum = 59;        break;        case 4:        sum = 90;        break;        case 5:        sum = 120;        break;        case 6:        sum = 151;        break;        case 7:        sum = 181;        break;        case 8:        sum = 212;        break;        case 9:        sum = 243;        break;        case 10:        sum = 273;        break;        case 11:        sum = 304;        break;        case 12:        sum = 334;        break;        default:        cout  2)            sum++;            //如果该年为闰年,且月份大于2月,那么sum值加1        }    days -= sum;    //将天数减去sum的值    while (days > 365)    //如果天数大于365    {        if ((year - 1) % 400 == 0 || (year - 1) % 100 != 0 && (yea r- 1) % 4 == 0)        //如果该年减1后的年为闰年        {            days -= 366;            //天数减366        }        else        {            days -= 365;            //否则天数减365        }        year -= 1;        //年份随之减1    }    while (365 >= days > 0)    //当天数不大于365且大于0时    {        days -= 1;        day -= 1;        //天数减1,日随之减1        if (day == 0)        //如果日为0        {            if (month == 1)            //如果月为1            {                month = 12;                day = 31;                year -= 1;                //月份更改为12,日更改为31,年减1            }            else if (month == 5 || month == 7 || month == 10 || month == 12)            //如果月为5,7,10,12            {                day = 30;                month -= 1;                //天数更改为30,月减1            }            else if ( month == 2 || month == 4 || month == 6 || month == 8 || month == 9 || month == 11)            //如果月为2,4,6,8,9,11            {                day = 31;                month -= 1;                //天数更改为31,月减1            }            else if (month == 3)            //如果月为3            {                if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)                //如果当年为闰年                {                    day = 29;                    month -= 1;                    //天数更改为29,月减1                }                else                {                    day = 28;                    month -= 1;                    //否则天数更改为28,月减1                }            }            else            //如果月不是以上的值                cout

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

设置断点调试一下吧,更清晰一点。现在我手里没电脑

使用道具 举报

第85行: while(365>=days>0) 这个条件表达式写错了,没仔细看逻辑,你自己再检查下吧。建议可以写个借口函数,由天数推日期,由日期推天数。你这样反着来好绕啊

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!