首页 > 代码库 > 从某一日期开始过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天的日期
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。