[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
#include <stdio.h>
int isLeafYear(int year){
 if(year % 400 == 0return 1;
 if(year % 100 == 0return 0;
 if(year % 4 == 0return 1;
 return 0;
}
int getDaysOfMonth(int year, int month){
 if(month == 2){
  if(isLeafYear(year)) return 29;
  else return 28;
 }
 if(month <= 7){
  if(month % 2 == 0return 30;
  else return 31;
 }
 else{
  if(month % 2 == 0return 31;
  else return 30;
 }
}
int PlusYear(int year){
 int LYear = 0, Year = 0;
 for(int i = 2012; i < year; i++)
  if(isLeafYear(i)){ //윤년 체크
   LYear++;
  }
  else//년도 체크
   Year++;
  }
 }
 return (365*Year + 366*LYear)%7//연도(365) * 수 + 윤연도(366) * 수 를 7로 나눔
}
void main(){
  int year;
 printf("년도 : ");
 scanf("%d"&year);
 int firstDay = PlusYear(year);
 const char* weekDays[] = {
  "일요일""월요일""화요일""수요일""목요일""금요일""토요일"
 };
 for(int month = 1; month <= 12++month){
  printf("%d년 %d월 1일 %s\n", year, month, weekDays[firstDay]);
  firstDay = (firstDay + getDaysOfMonth(year, month) - 28) % 7;
 }
}
cs

댓글

이 블로그의 인기 게시물

[안드로이드 스튜디오 APK] 메모장 Memo 오픈 소스

[C 언어] 하노이 탑 Tower of Hanoi

[Swift] (1) IOS 앱 개발 준비