달력 1~12월 다 찍어내기

☆C언어 2017. 6. 17. 01:42

#include<stdio.h>

int month[13]={0,1,2,3,4,5,6,7,8,9,10,11,12};

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

char *weekname[7]={"일","월","화","수","목","금","토"};

int main(void)

{


int y=0,m=0;//년월일

int L_y=0;//작년

int total_day;//일수계산

int week=0;//요일

int m_week[13];

int calendar[13][7][8]={0,};

FILE *out; //출력파일


out=fopen("out.txt","w");




//입력

printf("Input Year : ");

scanf("%d",&y);


// printf("Input month : ");

// scanf("%d",&m);



//윤년계산

if((y%4==0)&& ((y%100!=0)||(y%400)))

day[2]=29;

else

day[2]=28;


//요일 계산

L_y=y-1;

total_day=(L_y+(L_y/4)-(L_y/100)+(L_y/400)+1);

m_week[1]=total_day%7;

for(int i=1;i<12;i++)

{

total_day+=day[i];

m_week[i+1]=total_day%7;

}

// week=total_day%7;


int num_count=1;

for(int j=1;j<=12;++j)

{

// printf("%d월\n",j);

int k=1,q=1;

num_count=1;

for(int i=1;i<=42;++i) //5*7다 돌림

{

if(num_count>day[j]) //날짜 다찍으면 탈출

break;

if(i<=m_week[j])

{

calendar[j][k][q]=0;

// printf("%2d",calendar[j][k][q]);

}

else

{

calendar[j][k][q]=num_count++;

// printf("%2d",calendar[j][k][q]);

}

q++;

if(i%7==0)

{

k++; //열증가

q=1; //행초기화

// printf("\n");

}


}


}


printf("<%d>\n",y);

int s=1; //달


for(int j=1;j<5;j++)

{

printf("%d월\t\t\t%d월\t\t\t%d월\n",s,s+1,s+2);

for(int i=0;i<3;i++)

{

for(int e=0;e<7;e++)

{

printf("%s",weekname[e]);

}

printf("\t\t");

}

printf("\n");

for(int x=1;x<7;++x)

{

for(int y=1;y<8;++y)

{

if(calendar[s][x][y]==0)

printf("  ");

else

printf("%2d",calendar[s][x][y]);

}

printf("\t\t");


for(int y=1;y<8;++y)

{

if(calendar[s+1][x][y]==0)

printf("  ");

else

printf("%2d",calendar[s+1][x][y]);

}

printf("\t\t");


for(int y=1;y<8;++y)

{

if(calendar[s+2][x][y]==0)

printf("  ");

else

printf("%2d",calendar[s+2][x][y]);

}







printf("\n");

}

s=s+3;

}



fclose(out);


}



'☆C언어' 카테고리의 다른 글

개미 문제(틀림)  (0) 2017.11.14
fflush 함수  (0) 2017.06.19
c언어 꿀팁  (0) 2014.10.14
조건부 컴파일 #if #elif #else #endif  (0) 2013.10.09
2차원 배열 포인터  (0) 2012.09.18