/* a8-1-2.c */
#include <stdio.h>

int week_of_day(int y, int m, int d);

int main(void)
{
	int year, month, day, week;
	char *w[] = {"日", "月", "火", "水", "木", "金", "土"};

	printf("西暦を入力してください。＞ ");
	scanf("%d", &year);
	printf("月を入力してください。＞ ");
	scanf("%d", &month);
	printf("日を入力してください。＞ ");
	scanf("%d", &day);

	/* 曜日を求める */
	week = week_of_day(year, month, day);
	if (week >= 0 && week <= 6) {
		printf("%d年%d月%d日は%s曜日です。\n", year, month, day, w[week]);
	}

	return 0;
}

/*** 曜日を求める ***/
/* （仮引数）y:西暦年　m:月　d:日　（返却値）曜日 0=日 1=月 2=火 3=水 4=木 5=金 6=土 */
int week_of_day(int y, int m, int d)
{
	if(m == 1) {
		y = y - 1;
		m = 13;
	}
	else if(m == 2) {
		y = y - 1;
		m = 14; 
	}

	return (5 * y / 4 - y / 100 + y / 400 + (26 * m + 16) / 10 + d ) % 7;
}
