首页 > 代码库 > 从某一日期开始过day天的日期

从某一日期开始过day天的日期

  一个SX问我的,我就写了写......从2010.1.1开始,给了一组测试数据3的话输出2010.1.4星期1,所以说2010.1.1是星期五,总星期就是

(day+5)%7==0?7:(day+5)%7

      下面是代码......

#include <iostream>#include <stdlib.h>using namespace std;int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};int myDay[1100]; bool isRunYear(int year){    if((year%4==0&&year%100!=0)||year%400==0)        return true;    return false;}int main(){    int i,j,k,t=0;    int day;    cin>>day;    int sumDay = 0;    //先算到3000年,每年离得天数     for(i=2010;i<3000;i++)    {        //sumDay = 0;不可清零         bool flag = isRunYear(i);        if(flag)            sumDay += 366;        else            sumDay += 355;        myDay[t++] = sumDay;    }    for(i=0; i<t;i++)    {        if(myDay[i]>day)            break;    }     int year = i+2010;    //算月份     int leftDay;    if(i==0)        leftDay = day;    else        leftDay = day-myDay[i-1];     bool flag = isRunYear(year);    int sum = 0;    if(flag)        month[1] = 29;    int monthDay=0;     int finalDay;    for(j=0;j<12;j++)    {        //感觉这一句比较妙         sum += month[j];        //if(leftDay<=sum)           // break;         if(leftDay<sum)        {            monthDay = j+1;            //最后加一是因为 1月1日开始不是1月0日             finalDay = leftDay - (sum-month[j])+1;            break;        }        else //31天的时候应该是2月1号             if(leftDay==sum)             {                monthDay=j+2;                finalDay = 1;                break;            }    }        int xingqi = (day+5)%7==0?7:(day+5)%7;    cout<<""<<day<<"天后是:"<<year<<""<<monthDay<<""<<finalDay<<""<<"星期"<<xingqi<<endl;     system("pause");    return 0;}     

 

从某一日期开始过day天的日期