一个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; }
时间: 2024-10-24 10:45:13