윤년(閏年)은 366일로 구성된 해를 의미합니다. 일반적으로 4년마다 한 번씩 윤년이 찾아오며, 이때 2월은 평소의 28일이 아닌 29일까지 존재하게 됩니다.
윤년 판별 로직
사용자가 콘솔을 통해 입력한 연도가 윤년인지 아닌지를 확인하기 위해 다음과 같은 조건식을 사용합니다.
if (( year%400 == 0)|| (( year%4 == 0 ) &&( year%100 != 0)))
위 조건식의 의미를 살펴보면 다음과 같습니다.
- 연도가 400으로 나누어 떨어지면 무조건 윤년입니다. (예: 2000년)
- 연도가 4로 나누어 떨어지면서 동시에 100으로 나누어 떨어지지 않으면 윤년입니다. (예: 2024년)
이 두 조건 중 하나라도 만족하면 해당 연도는 윤년이며, 그렇지 않으면 평년입니다. 100으로 나누어 떨어지지만 400으로는 나누어 떨어지지 않는 연도(예: 1900년, 2100년)는 윤년에서 제외되는 점을 기억해야 합니다.
C 언어 예제 코드
다음은 if 조건문을 활용하여 윤년 여부를 검사하는 C 프로그램입니다.
#include <stdio.h>
int main(){
int year;
printf("Enter any year you wish \n ");
scanf(" %d ", &year);
if (( year%400 == 0)|| (( year%4 == 0 ) &&( year%100 != 0)))
printf("\n %d is a Leap Year. \n", year);
else
printf("\n %d is not the Leap Year. \n", year);
return 0;
}코드 설명
- 정수형 변수
year를 선언하여 사용자로부터 연도를 입력받습니다. scanf함수로 콘솔에서 연도 값을 읽어옵니다.- 윤년 판별 조건식을 평가한 후, 참이면 "윤년입니다"라는 메시지를 출력합니다.
- 조건이 거짓이면 else 블록이 실행되어 "윤년이 아닙니다"라는 메시지를 출력합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 확인할 수 있습니다.
Enter any year you wish 2045 2045 is not the Leap Year.
입력된 2045년은 4로 나누어 떨어지지 않기 때문에 윤년이 아니라는 결과가 출력됩니다. 반대로 2024년이나 2000년을 입력하면 윤년으로 정상적으로 판별됩니다.