C언어 Example 달력(calendar)


실행화면


calendar.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <Windows.h>
 
void draw();
int days(int month, int year);
 
int main() {
 
    int month[] = { 312831303130313130313031 }; // 2월이 28일 총 365일
    // int yoonMonth[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 2월이 29일 총 366일
    // int calendar[7][7]
     
    int inputYear = 0, inputMonth = 0;
    int start; // 시작 위치
    int number;
 
    int i;
 
    printf("표시하고 싶은 달력의 연도와 월을 입력하세요.\n");
    scanf_s("%d%d"&inputYear, &inputMonth); 
 
    start = days(inputMonth, inputYear); // 시작요일의 위치를 구한다.
 
    if ((inputYear % 4== 0) month[1= 29// 윤년이라면 2월은 29일
 
    draw();
     
    number = inputMonth; // for에서 Month를 쓰기위함 inputMonth로하면 애러남
 
    // 요일 공백
    for (i = 0; i < start; i++) {
        printf("    ");
    }
 
    // 1일부터 시작
    // 7일마다 칸띄우기를 해주기 위해서 +start를 함.
    for (i = 1+start; i <= month[number - 1+start; i++) {
 
        // 1 ~ month[number-1]까지 출력
        if (i > 9+start) {
            printf(" %d ", i - start);
        }
        else {
            printf("  %d ", i - start);
        }
 
        // 7일마다 칸띄우기
        if (i > && ((i % 7== 0)) {
            printf("\n");
        }
    }
 
    printf("\n\n");
 
    system("pause");
    return 0;
}
 
// 그리는 함수
void draw() {
    printf("-----------------------------\n");
    printf(" sun mon tue wed thu fri sat \n");
    printf("-----------------------------\n");
}
 
// 1일이 어느 요일인지 계산하는 함수
int days(int month, int year) {
    int result;
 
    int y = year;
    int m = month;
 
    // 첼러의 공식
    if (m == || m == 2){
        y -= 1;
        m += 12;
    }
     
    result = (y + y / - y / 100 + y / 400 + (13 * m + 8/ + 1) % 7;
     
    // result -- 0 = 일요일 1 = 월요일 ... 6 = 토요일
 
    return result;
}
cs

댓글