#include <stdio.h>
int isLeap(int year); //윤년인지 구분해주는 함수
int yearDay(int year, int month, int day); //그 해의 몇번째 날인지 계산하는 함수
int totalDay(int year, int month, int day); //1900년 부터 총 날짜를 계산하는 함수
int Week(int total); //요일을 반환하는 함수
int main() {
int year, month, day; //년 월 일을 입력받을 함수
char week[7][5] = { {"일"}, {"월"}, {"화"}, {"수"}, {"목"}, {"금"}, {"토"} }; //요일을 초기화
char leap[2][3] = { {"평"}, {"윤"}};
int total = 0;
//년 월 일 입력
printf("년 월 일을 입력하시오 : ");
scanf_s("%d %d %d", &year, &month, &day);
total = totalDay(year, month, day);
//년 월 일 출력
printf("\n%d 월 %d 일 %s요일은 %d년의 %d번째 날이다. (%s년)\n\n"
, month, day, week[Week(total)], year, yearDay(year, month, day), leap[isLeap(year)]);
}
int isLeap(int year) {
if (year % 4==0) {
if (year % 100==0) {
if (year % 400 == 0)
return 1;
else return 0;
}
return 1;
}
else return 0;
}
int yearDay(int year, int month, int day) {
int i;
int monthF = 0; //해당 달의 마지막날
int sum = 0;
for (i = 1; i < month; i++) {
switch (i)
{
case 2: {
if(isLeap(year)) //윤년이면 29일까지
monthF = 29;
else monthF = 28; //평년이면 28일까지
break;
}
case 4: //30일 까지
case 6:
case 9:
case 11: monthF = 30; break;
default: monthF = 31; break; //31일까지
}
sum += monthF;
}
sum += day;
return sum;
}
int totalDay(int year, int month, int day) {
int i;
int total = 0;
for (i = 1900; i < year; i++) {
if (isLeap(year)) total += 366;
else total += 365;
}
return total + day ;
}
int Week(int total) {
int week = total % 7;
return week;
}
'Programming > Tutoring' 카테고리의 다른 글
05.14(화)_백준 (0) | 2019.05.14 |
---|---|
백준 (0) | 2019.05.07 |
공모전 (0) | 2019.04.02 |
윤년 참고 코드 (0) | 2019.03.26 |
1주차 - 답안 (0) | 2019.03.26 |