Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 특정 연도가 윤년인지 판별하는 프로그램

윤년(leap year)은 366일로 구성된 해이며, 일반적인 해(평년)는 365일입니다. 이 글에서는 C 언어를 사용하여 주어진 연도가 윤년인지 아닌지를 판별하는 프로그램을 작성하는 방법을 알아봅니다.

판별의 기본 원리는 간단합니다. 해당 연도가 400 또는 4로 나누어 떨어지면 윤년으로 판단하고, 어느 쪽으로도 나누어 떨어지지 않으면 평년으로 처리합니다.

입력 및 출력 예시

입력: year = 2000
출력: 2000 is a Leap Year

입력: year = 101
출력: 101 is not a Leap Year

알고리즘

시작
Step 1 → 연도가 윤년인지 검사하는 bool 함수 선언
bool check(int year)
IF year % 400 == 0 || year % 4 == 0
return true
End
Else
return false
End
Step 2 → main() 함수 내부
변수 선언: int year = 2000
check(year) 결과에 따라 "%d is a Leap Year" 또는 "%d is not a Leap Year" 출력
year = 101 로 변경 후 동일하게 검사 및 출력
종료

C 구현 예제

#include <stdio.h>
#include <stdbool.h>
// 연도가 윤년인지 검사하는 bool 함수
bool check(int year){
// 연도가 400의 배수 또는 4의 배수이면 윤년으로 판단
if (year % 400 == 0 || year%4 == 0)
return true;
else
return false;
}
int main(){
int year = 2000;
check(year)? printf("%d is a Leap Year",year): printf("%d is not a Leap Year",year);
year = 101;
check(year)? printf("%d is a Leap Year",year): printf("\n%d is not a Leap Year",year);
return 0;
}

실행 결과

2000 is a Leap Year
101 is not a Leap Year

참고: 정확한 윤년 판별 규칙

그레고리력 기준으로 윤년의 완전한 조건은 다음과 같습니다.

  • 연도가 4로 나누어 떨어지면서 100으로는 나누어 떨어지지 않으면 윤년이다.
  • 연도가 400으로 나누어 떨어지면 윤년이다.

예를 들어 2000년은 400으로 나누어 떨어지므로 윤년이지만, 1900년은 100으로는 나누어 떨어지고 400으로는 나누어 떨어지지 않기 때문에 평년입니다. 따라서 실무 코드에서는 (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) 조건을 사용하는 것이 더 정확합니다.