i값이 줄었다 늘었다 합니다.
#include
int aeday(int ayear,int amonth,int i )
{
if(ayear%400==0||(ayear%4==0&&!ayear%100==0))
{
if(amonth==2)
{
i=i+29;
printf("i:%d\n",i);
}
else
{
if(amonth==1||amonth==3||amonth==5||amonth==7||amonth==8||amonth==10||amonth==12)
{
i=i+31;
printf("i:%d\n",i);
}
else
{
i=i+30;
printf("i:%d\n",i);
}
}
}
else
{
if(amonth==2)
{
i=i+28;
printf("i:%d\n",i);
}
else
{
if(amonth==1||amonth==3||amonth==5||amonth==7||amonth==8||amonth==10||amonth==12)
{
i=i+31;
printf("i:%d\n",i);
}
else
{
i=i+30;
printf("i:%d\n",i);
}
}
}
}
int main(void)
{
int ayear, amonth,aday,byear, bmonth, bday,i ;
printf("시작일을 입력하세요(년 월 일):");
scanf("%d/ %d/ %d",&ayear,&amonth,&aday);
printf("종료일을 입력하세요(년 월 일):");
scanf("%d/ %d/ %d",&byear,&bmonth,&bday);
if(amonth==bmonth&&ayear==byear)
{
i+=(bday-aday);
printf("두 날짜의 차이는 %d입니다.",i);
return(0);
}
else
{
for (;ayear
{
i+=aeday(ayear,amonth,i);
printf("i:%d\n",i);
if(amonth==13)
{
amonth-=12;
ayear+=1;
}
}
i=(bday-aday)+i;
printf("i:%d\n",i);
printf("두 날짜의 차이는 %d입니다.",i);
return(0);
}
}
이렇게 해서 1/ 1/ 1과 2/ 2/ 2를 넣고 i값을 추적해 본 결과, i값은 31,5,33,10,11 순으로 변합니다. 분명 코드는 i값이 마지막 빼고는 더하기만 되야 하는데 왜 늘었다 줄었다 할까요?
댓글 달기