编程高手来试试,不会啊

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:01:36
Description

在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。

Input

输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。

Output

对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必须是下面中的一个: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" 或 "Saturday“。

Sample Input

1730
1740
1750
1751
-1

Sample Output

2004-09-26 Sunday
2004-10-06 Wednesday
2004-10-16 Saturday
2004-10-17 Sunday

#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
long days;

struct date
{
int year;
int month;
int day;
char week[10];
};

int leap(int year)
{
if(year%4==0&&(year%100==0&&year%400==0))
return 1;
return 0;
}

int caclyear(long n)
{
int t=0,year=2000;
while(1)
{
days=n;
if(leap(year))
n-=366;
else
n-=365;
if(n>0)
{
t++;
year++;
}
else
break;
}
return year;
}
int caclmonth(long n,int year)
{
int a[]={31,28,31,30,31,30,31,31,30,31,30,31};

for(int i=0;i<12;i++)
{
days=n;
if(leap(year)&&i==1)a[i]++;
if(n-a[i]>0)
n-=a[i];
else
break;
}

return i+1;
}

int caclday(long n)