[C언어 소스] 년도와 일수 입력받아 날짜 계산하기

알고리즘

날짜 계산(년도, 일수)

월별 일수:={ 31,28,31,30,31,30,31,31,30,31,30,31};

조건(year is 윤년)

    2월 달 일수:=29

반복(일수>월별일수[달])

일수:= 일수 – 월별일수[달]

날짜 출력

년도와 일수 입력받아  날짜 출력 화면

소스코드

////[언제나 C언어] 년도와 일수 입력받아 날짜 계산하기 [예제 Center]

#include <stdio.h> 
void date(int year, int day);//년도와 일수를 입력하면 년월일 출력

int main(void)
{
    int year, day;
    printf("년도와 일수 입력(예:2016 102): ");
    scanf_s("%d %d", &year, &day);
    date(year, day); //year와 day를 입력인자로 전달하여 일 수를 출력 
    return 0;
}

void date(int year, int day)
{
    int mdays[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    int month;
    int mday = day;//mday를 day로 설정 
    if ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)))//윤년 판단 
    {
        mdays[1] = 29;//2월달의 날 수를 29로 설정 
    }
    for (month = 0; mday>mdays[month]; month++)//mday가 mdays[month]보다 크면 
    {
        mday -= mdays[month];//mday에 mdays[month]를 빼줍니다. 
    }
    //month는 mdays의 인덱스로 사용해서 실제 출력할 때는 1을더해서 출력합니다. 
    printf("%d년도의 %d번째 날은 %d월 %d일입니다.\n", year, day, month + 1, mday);
}