한 해의 지난 날 수를 계산하는 프로그램을 구현해보자.
#include <stdio.h>
int mdays[][12] = {
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int isleap(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
int dayofyear(int y, int m, int d)
{
int i;
int days = d;
for (i = 1; i < m; i++)
{
days += mdays[isleap(y)][i - 1];
}
return days;
}
int main()
{
int year, month, day;
int retry;
do {
printf("년 : "); scanf_s("%d", &year);
printf("월 : "); scanf_s("%d", &month);
printf("일 : "); scanf_s("%d", &day);
printf("%d년의 %d일째입니다.", year, dayofyear(year, month, day));
prinif(" 다시 할까요? (1....예 / 2... 아니요) : ");
scanf_s("%d", &retry);
} while (retry == 1);
return 0;
}
int dayofyear(int y, int m, int d)
{
int i;
int days = d;
for (i = 1; i < m; i++)
{
days += mdays[isleap(y)][i - 1];
}
return days;
}
isleap함수는 매개변수 year로 받은 연도가 윤년이면 1 / 평년이면 0 반환
평년 1월 , 2월 ,,,, 12월의 수
윤년 1월, 2월 ,,,, 12월의 수
int mdays[][12] = {
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int isleap(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}