int yearcheck(int);
void main()
{
int year, mon, day; //년월일을 입력받을 변수선언
int totdate=0; // 총일수 저장 변수
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //각월별 일수선언 배열
int i,j; //loop제어 변수 선언
int leap; // yearcheck함수 반환값 저장 변수
printf("* 년월일을 입력하시오 : ");
scanf("%d %d %d",&year,&mon,&day); //년월일을 입력받는다
for(i = 1 ; i <= year-1 ; i++){ //전년도 까지 날수를 계산
leap = yearcheck(i);
if(leap == 1){
totdate +=366; //윤년이면 366일을 더한다
}
else{
totdate +=365;
} //평년이면 365일을 더한다
}
for(j = 0 ; j <= mon-2 ; j++){ //전달까지 날수 계산 배열첨자와 같이 돌릴려고하니까 시작이 0이대어1을더 감소
totdate += month[j]; //해달 월까지의 일수를 더한다.
}
leap = yearcheck(year);
if(leap == 1 && mon >=3) { totdate+=1; } //윤년이고 3월이 넘어가면 하루를 더한다
totdate += day;
switch(totdate%7){
case 0 : printf("%d년 %d월 %d일은 일요일입니다. \n",year,mon,day);
break;
case 1 : printf("%d년 %d월 %d일은 월요일입니다. \n",year,mon,day);
break;
case 2 : printf("%d년 %d월 %d일은 화요일입니다. \n",year,mon,day);
break;
case 3 : printf("%d년 %d월 %d일은 수요일입니다. \n",year,mon,day);
break;
case 4 : printf("%d년 %d월 %d일은 목요일입니다. \n",year,mon,day);
break;
case 5 : printf("%d년 %d월 %d일은 금요일입니다. \n",year,mon,day);
break;
case 6 : printf("%d년 %d월 %d일은 토요일입니다. \n",year,mon,day);
break;
}
}
int yearcheck(int year)
{
if(year%4 != 0){
return 0; //4로 나누어 떨어지지않으면 평년 0을 반환
}
else if(year%100 != 0){
return 1;//4로 나누어떨어지고 100으로 나누어떨어지지않으면 윤년 1을 반환
}
else if(year%400 != 0){
return 0; //4로 나누어 떨어지고 100으로 나누어 떨어지고 400으로 떨어지지않으면 평년 0을 반환
}
else {
return 1;//4로 나누어 떨어지고 100으로 나누어 떨어지고 400으로 떨어지면 윤년 1을 반환
}
}
댓글 없음:
댓글 쓰기