본문 바로가기
작업/Programming

Perfect C 6장 프로그래밍 연습 10번, 윤년 구하기

 

IF 구문을 통해서 윤년과 평년을 구분하는 문제입니다.

윤년과 평년의 정의는 문제에 제시되어 있습니다.

저는 위키백과의 지식을 빌려오도록 하겠습니다.

 

 

 

1, 2, 3번을 각각의 조건이라고 생각하면 해결하기 쉬울 것입니다.

 

 

'''

   만약 A년이 4로 나누어 떨어지면 '일단'은 윤년입니다.

   그리고 그 A년이 100으로도 나누어 떨어진다면 A년은 윤년이 아닌 평년이 될 수도 있다는 뜻입니다.

   마지막으로 A년을 400으로도 나누어 보았는데 떨어졌다. 그럼 그건 '확실히' 윤년입니다.

'''

 

 

이런 순서를 위해서는 IF 구문을 중첩하여 사용하는 것이 좋습니다.

 

 

처음 IF로 A년이 4로 나누어 떨어지는지 아닌지 구분합니다. 

나머지가 0이면 윤년의 가능성이 있는 것이며 0이 아니면 모두 평년이 됩니다.

 

 

처음 IF 안에 새로운 IF를 추가하여 100으로 나누어 떨어지는지도 확인합니다.

만약 나머지가 0이 나온다면 마지막 조건 (400으로 나누었을 때)의 결과에 따라 윤년과 평년이 갈립니다.

 

 

나머지가 0이 아니라면 이는 윤년이 확실하게 되는 것입니다.

 

 

 

윤년 판단 순서도

 

IF의 위치를 잘 확인하여 다중 IF를 만들어 내면 간단하게 해결할 수 있는 문제입니다.

else를 활용하여 조건과 일치하지 않는 경우에는 윤년인지, 평년인지 구분시켜 줍니다.

 

 

else를 활용하지 않으면 IF문을 의도하는 대로 탈출하지 못해 출력이 여러 개 나오는 경우가 생길 수 있습니다.

 

//문제10번
int year;

printf("년도를 입력하세요 : ");
scanf("%d", &year);

if (year % 4 == 0) {  //윤년
	if (year % 100 == 0) { //평년
		if (year % 400 == 0) {  //윤년
			printf("입력하신 %d년은 윤년입니다.\n", year);
		}
		else
			printf("입력하신 %d년은 평년입니다.\n", year);
	}
	else
		printf("입력하신 %d년은 윤년입니다.\n", year);
}
else
	printf("입력하신 %d년은 평년입니다.\n", year);

 

-끝-