본문으로 바로가기

C :: 달력 출력하기(2017년 기준)

category Programing/C 2017. 4. 4. 02:50

이번에는 코딩과제만 주어졌다.


1. 달력 출력하기(2017년 기준)


2. 배열크기 N을 입력받아 N*N행렬을 만들고 오름차순으로 정렬하기


3. 위의 정렬을 역순으로 정렬하기


4. ㄹ 정렬하기




우선 내가 작성한 달력을 출력하는 코드는 아래와 같다


#include <stdio.h>


int i,j;


void func_make(int day1[][7], int start)

{

for(i=0;i<5;i++)

{

for(j=start;j<6;j++)

day1[i][j+1]=day1[i][j]+1;

if(i!=4)

day1[i+1][0]=day1[i][j]+1;

start=0;

}

}


int func_start(int m)

{

if(m==1||m==10) return 0;

else if(m==5) return 1;

else if(m==8) return 2;

else if(m==2||m==3||m==11) return 3;

else if(m==6) return 4;

else if(m==4||m==7) return 6;

else if(m==9||m==12) return 5;

}


int main()

{

int day[5][7];

int month,month1;

printf(" 월\r");

scanf("%d",&month);

printf("\n일\t월\t화\t수\t목\t금\t토\n");

month1 = month;

func_start(month1);

month1 = func_start(month1);

day[0][month1]=1;


func_make(day,month1);



for(i=0;i<5;i++)

{

for(j=0;j<7;j++)

{

if(month%2 == 1)

{

if(day[i][j] ==32)

{printf("\n");return 0;}

}

else if(month == 2)

{

if(day[i][j] ==29)

{printf("\n");return 0;}

}

else if(month%2 == 0)

if(day[i][j] ==31)

{

printf("\n");return 0;

}

if(j<month1)

{

printf("\t"); continue;

}

printf("%d\t",day[i][j]);

}

month1=0;

printf("\n");

}

return 0;

}


음.... 아주 별로다 ㅇㅅㅇ..;;;


--------------------------------

아주 별로여서 수정했다.


코드는 아래와 같다.


#include <stdio.h>



int i,j;


void func_make(int day1[][7], int month1)

{

   int days[12] = {31,28,31,30,31,30,31,30,31,30,31,30};

   int tmp=0;

   

   for(i=0;i<month1-1;i++)

      tmp+=days[i];

   

   for(i=0;i<tmp%7;i++)

      day1[0][i]=0;


   day1[0][tmp%7-1]=0;


   for(i=0;i<5;i++)

   {

      for(j=tmp%7;j<=6;j++)

      {

         if(day1[i][j-1] == days[month1-1] || day1[i][j-1]==-1)

            day1[i][j]=-1;

         else

            day1[i][j]=day1[i][j-1]+1;

         

         if(i !=4 && j==5)

            day1[i+1][0]=day1[i][j]+1;

      }

      tmp=7;

   }

}   

   


int main()

{

   int month,day[5][7];

   printf("  월\r");

   scanf("%d",&month);

   printf("\n일\t월\t화\t수\t목\t금\t토\n");

   

   func_make(day,month);


   for(i=0;i<5;i++)

   {

      for(j=0;j<7;j++)

      {

         if(day[i][j]==0||day[i][j]==-1)

            printf("\t");

         else

            printf("%d\t",day[i][j]);

      }

      printf("\n");

   }

   return 0;

}


아직도 많이 부족하지만 여러모로 좋아진것 같다


'Programing > C' 카테고리의 다른 글

C :: 2차원배열 ㄹ정렬하기  (0) 2017.04.04
C :: 2차원배열에서의 오름차순과 그 역순  (0) 2017.04.04
C :: 오름차순과 내림차순  (0) 2017.03.29
C :: c언어 대소문자 변환  (2) 2017.03.29
C :: call by value/reference  (0) 2017.03.29