[Tmax 연수] C - 특정 연 월 일에 해당하는 주와 요일 출력

#include <stdio.h>

int isLeapYear ( int year ) {
  return ((year % 4 ==0 && year % 100) || year % 400 == 0);
}

int main() {
  int month_days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  int year;
  int month;
  int day;
  int days = 0, daysOfThisYear;
  int i, week, leapYear;

  printf("연, 월, 일 : ");
  scanf("%d %d %d", &year, &month, &day);
  leapYear = isLeapYear(year);

  for ( i = 1 ; i < year ; i++ ) {
    days += 365;
    if ( isLeapYear(i) )
      days++;
  }

  for ( i = 1, daysOfThisYear = 0 ; i < month ; i++ ) {
    daysOfThisYear += month_days[i-1];

    if ( i == 2 && leapYear )
      daysOfThisYear++;
  }
  days += (daysOfThisYear + day);
  week = ((daysOfThisYear + day))/7+1;
  // printf(“%d %d %d\n”,days, daysOfThisYear, week);
  printf("%d 번째 주 ",week );

  switch((days%7)) {
    case 0: printf(“일요일 입니다.\n);break;
    case 1: printf(“월요일 입니다.\n);break;
    case 2: printf(“화요일 입니다.\n);break;
    case 3: printf(“수요일 입니다.\n);break;
    case 4: printf(“목요일 입니다.\n);break;
    case 5: printf(“금요일 입니다.\n);break;
    case 6: printf(“토요일 입니다.\n);break;
  }
}
Back