C 언어 로 달력 인쇄 하기

달력 인쇄 는 프로그래머 가 입문 할 때의 기초 연습 이 어야 한다.1 년 의 달력 을 인쇄 하 는 데 는 많은 다른 실현 이 있 는데,나 는 여기에 실현 할 수 있 는 방법 을 제시 합 니 다.우선 이 해 가 윤년 인지 평년 인지,윤년 의 2 월 은 29 일,연간 은 366 일 인지 확인 해 야 한다.평년 2 월 은 28 일 로 연중 365 일이 다.그 해 의 하루 가 무슨 요일 인지 확인 해 야 한다.0001 년 1 월 1 일 월요일 부터 이 값 은 해당 해 부터 원년 까지 의 총 일수 모델 7 을 사용 하여 구 할 수 있다.마지막 으로 달력 을 어떻게 출력 할 것 인 가 를 고려 하면 달력 을 2 차원 배열 에 저장 할 수도 있 고 직접 출력 할 수도 있다.

#include<stdio.h>

/*         */
int IsLeap (int year) {
    if((year%4==0)&& (year%100!=0) || (year%400==0))
      return 1;
    else
      return 0;
}
/*            */
int FirstWeeday (int year) {
    int days = (year-1)*365 + (year-1)/4 - (year-100)/100 + (year-1)/400;
    return days%7;
}
/*    */
void PrintWeedTitl () {
    int i;
    for(i = 0;i<7;i++){
        switch(i) {
            case 0 : printf("  Sun  ");break;
            case 1 : printf("Mon  ");break;
            case 2 : printf("Tue  ");break;
            case 3 : printf("Wed  ");break;
            case 4 : printf("Thu  ");break;
            case 5 : printf("Fri  ");break;
            case 6 : printf("Sat  ");break;
            default : break;
        }
    }
    printf("
"); } /* */ void PrintMonTitl(int month) { switch(month) { case 0 : printf("Jan
");break; case 1 : printf("Feb
");break; case 2 : printf("Mar
");break; case 3 : printf("Apr
");break; case 4 : printf("May
");break; case 5 : printf("Jun
");break; case 6 : printf("Jul
");break; case 7 : printf("Aug
");break; case 8 : printf("Sep
");break; case 9 : printf("Oct
");break; case 10 : printf("Nov
");break; case 11 : printf("Dec
");break; default : break; } } /* */ void PrintYear (int year) { int m,i,d; char c=' '; int MONTH[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; if(IsLeap(year)) MONTH[1] = 29; int firstwed = FirstWeeday(year); printf("Year: %d
",year); printf("========================
"); for(m = 0;m<12;m++) { PrintMonTitl(m); PrintWeedTitl(); for(d=1;d<=MONTH[m];d++) { if(d == 1) { for(i = 0;i<firstwed;i++) printf("%5c",c); printf("%5d",d); } else { printf("%5d",d); } if((firstwed+d-1)%7 == 6) printf("
"); } firstwed = (firstwed + MONTH[m])%7; printf("
"); } } /* */ int main() { int year = 2016; PrintYear(year); }
코드 의 테스트 결 과 는 다음 과 같다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기