C 달력 소스코드

Programming/C,CPP,CS 2012. 7. 23. 04:30 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include <stdio.h>

#include <windows.h>   // 콘솔색상을바꾸기위해서선언

 

#define leapyear(year) ((year)%4==0 && ( (year)%100!=0 || (year)%400==0 )) //윤년판정매크로

 

// Console 글씨색상을바꾸는함수

void SetConsoleTextColor(int bgcolor , int color);

 

int main(void)

{

    int year, month=0;

    int totalday[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

    int lastyear, day, i;

    FILE * fp = fopen("output5.txt", "wt"); //output5.txt에출력하기위해오픈한다.

 

    printf("몇년의달력을출력하시겠습니까?: ");

    scanf("%d",&year);

    printf("몇월의달력을출력하시겠습니까?: ");

    scanf("%d",&month);

    if(month==2 && leapyear(year))  totalday[2]=29;

    lastyear = year-1;

    {

        day = (lastyear+(lastyear/4)-(lastyear/100)+(lastyear/400)+1)%7;

        for(i=1;i < month;i++)

        {

            day+=totalday[i];

            day%=7;

        }

        // console에출력

        printf("\n           ");

        SetConsoleTextColor(0x0 , 0xe);              // 노란색글씨로바꾼다.

        printf("%d%d\n",year,month);

        SetConsoleTextColor(0x0 , 0xc);              // 빨간색글씨로바꾼다.

        printf("\n  ");

        SetConsoleTextColor(0x0 , 0xf);              // 흰색글씨로복귀

        printf("월화수목금");

        SetConsoleTextColor(0x0 , 0x9);              // 파란색글씨로바꾼다.

        printf("  ");

        SetConsoleTextColor(0x0 , 0xf);              // 흰색글씨로복귀

 

        // 파일에출력

        fprintf(fp, "\n           %d%d\n",year,month);

        fprintf(fp, "\n  일월화수목금토");

 

        for(i=-day; i<totalday[month]; i++)

        {

            if((i+day)%7 == 0)

            {

                printf("\n");

                fprintf(fp, "\n");

            }

            if(i<0)

            {

                printf("    ");

                fprintf(fp, "    ");

            }

            else

            {

                // 토요일일경우에는파란색으로출력한다

                if( (i+day)%7 == 6)   SetConsoleTextColor(0x0 , 0x9);

                // 일요일일경우에는빨간색으로출력한다.

                if( (i+day)%7 == 0)   SetConsoleTextColor(0x0 , 0xc);printf("%4d",i+1);

                // 원래흰색글씨로복귀시킨다.

                SetConsoleTextColor(0x0 , 0xf);

                fprintf(fp, "%4d",i+1);

            }

        }

    }

    printf("\n\n");

    fprintf(fp, "\n\n");

    fclose(fp);

    return 0;

}

 

 

// Console 글씨색상을바꾸는함수

void SetConsoleTextColor(int bgcolor , int color)

{

    bgcolor &= 0xf;

    color      &= 0xf;

    SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE) , (bgcolor << 4) | color );

}

 

 

 

'Programming > C,CPP,CS' 카테고리의 다른 글

프로그래밍 경진대회 관련 사이트  (0) 2012.10.14
CPP 예외처리  (0) 2012.09.23
C언어 정렬 알고리즘 예제  (0) 2012.08.26
CPP 달력 소스코드  (0) 2012.07.21
정렬 알고리즘 정리  (0) 2012.07.20