발전을 위한 기록

[C언어] C언어로 달력 출력하기 본문

프로그래밍/C언어

[C언어] C언어로 달력 출력하기

릴릴2 2024. 1. 6. 01:45

C언어로 간단한 달력을 출력할 수 있습니다.

 

설명을 주석을 참고해주세요!

#include <stdio.h>

// 함수 선언
void displayCalendar(int year, int month);

int main() {
    // 사용자로부터 연도와 월을 입력받음
    int year, month;
    printf("연도 입력: ");
    scanf("%d", &year);
    
    printf("월 입력: ");
    scanf("%d", &month);

    // 달력 출력 함수 호출
    displayCalendar(year, month);

    return 0;
}

// 해당 월의 일수를 반환하는 함수
int getDaysInMonth(int year, int month) {
    int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    // 윤년인 경우 2월의 일수를 29로 수정
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        daysInMonth[2] = 29;

    return daysInMonth[month];
}

// 달력 출력 함수 정의
void displayCalendar(int year, int month) {
    // 해당 년월의 첫 날의 요일을 계산
    int startingDay = (year * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400) % 7;

    // 달력 출력
    printf("\n    %d년 %d월\n", year, month);
    printf("일  월  화  수  목  금  토\n");

    // 첫 날까지의 공백 출력
    for (int i = 0; i < startingDay; ++i)
        printf("    ");

    // 해당 월의 달력 출력
    for (int day = 1; day <= getDaysInMonth(year, month); ++day) {
        printf("%2d", day);

        // 토요일이면 줄 바꿈
        if ((startingDay + day) % 7 == 0)
            printf("\n");
        else
            printf("  ");
    }
    printf("\n");
}

출력결과

728x90