標籤:style blog io ar color os sp for on
一個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天的日期