C/C++ 언어 1900년 1월 1일부터 지난 일수 구하기


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
/***************************************************************************************
입력: 년 월 일 
출력:날짜수 
1900년 1월 1일부터
1905년 5월 4일까지..  날짜가 얼마나 지났는지 년월일을 입력하면 날짜수가 나오는겁니다.
윤년 4년에 한번. 100으로나누면 평년 400으로 나누면 윤년..
윤년인 달은 2월달이 29일 
평년인 달은 2월달이 28일
***************************************************************************************/
 
#include <stdio.h>
 
int main(void) {
  int year, month, day;  // 입력 받기 위한 변수 년,월,일
  int sumday = 0;   // 출력할 날짜 초기화
  int i;     // 반복문을 위한 변수
 
  printf("년 월 일 : ");
  scanf("%d%d%d",&year,&month,&day);
 
  for(i = 1900; i < year; i++) { // 1900년 부터 입력 받은 년까지
    // " < " 은 이유는 " 년 "까지만 계간 할것이므로
    // ex> 1900년 1월 1일 부터 2월 2일 까지라면 for문은 돌면 안됨
    if(i % 4 == 0) {    // 윤년을 계산 하기위함
      if(i % 100 == 0) {  // 100으로 나누면 평년
        if(i % 400 == 0) { // 400으로 나누면 윤년
          sumday = sumday + 366;
          continue;
        }
        sumday = sumday + 365;
        continue;
      }
      sumday = sumday + 366;
      continue;
    }
    sumday = sumday + 365;
  }
  for(i = 1; i < month;i++) {  // 1월 부터 입력 받은 월까지 " < " 이유는 위와 동일
    if(i == 4 || i == 6 || i == 9 || i == 11) { // 30일인 달
      sumday = sumday + 30;
    }
    else if(i == 2) {
      if(i % 4 == 0) {    // 윤년을 계산 하기위함
        if(i % 100 == 0) {  // 100으로 나누면 평년
          if(i % 400 == 0) { // 400으로 나누면 윤년
            sumday = sumday + 29;
            continue;
          }
          sumday = sumday + 28;
          continue;
        }
        sumday = sumday + 29;
        continue;
      }
      sumday = sumday + 28;
    }
    else
      sumday = sumday + 31;  // 31일인 달
  }
  sumday = sumday + (day - 1);  // 0일은 없기 때문에
  printf("%d일\n",sumday);
 
  return 0;
}
cs


C/C++ 언어 1900년 1월 1일부터 지난 일수 구하기




+ Recent posts