今天周几

#include "stdio.h"
#include "string.h"

#define ISYEAR(x) x%4==0&&x%100!=0||x%400==0?1:0

int dayofMonth[13][2]={31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31};

char monthName[13][20]={"","January","February","March","April","May","June","July","August",
"September","October","November","December"};

char weekName[7][20]={"Sunday","MOnday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int buf[3001][12][32];

struct Date
{
	int Day;
	int Month;
	int Year;
	void nextDay()
	{
		Day++;
		if(Day>dayofMonth[Month][ISYEAR(Year)])
		{
			Day = 1;
			Month++;
			if(Month>12)
			{
				Month = 1;
				Year++;
			}
		}

	}
};

int main()
{
	Date tmp;
	int cnt = 0;
	tmp.Day = 1;
	tmp.Month = 1;
	tmp.Year = 0;
	while(tmp.Year != 3001)
	{
		buf[tmp.Year][tmp.Month][tmp.Day] = cnt;
		tmp.nextDay();
		cnt++;
	}

	int d,m,y;
	char s[20];
	while(scanf("%d%s%d",&d,s,&y) != EOF)
	{
		for(m=1;m<=12;++m)
		{
			if(strcmp(s,monthName[m])==0)//将输入字符串与月名比较得出月数
			{
				break;
			}
		}
		int days = buf[y][m][d] - buf[2012][7][16];//计算给定日期与今日日期的天数间隔
		days += 1;//2012.7.16位星期一,对应数组下标为1,
		puts(weekName[(days%7+7)%7]);//将计算后得到的下标用7对其取模
	}
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值