윤년 계산기 만들기
C언어로 윤년 계산기를 만들어 봤다.
목표: IF문, 함수 바깥으로 최대한 빼서 만들기
윤년 규칙:
1. 4로 나눠지는 숫자여야 한다.
2. 하지만 100으로 나눠지는 숫자는 윤년이 아니다.
3. 2의 숫자들 중에서 400으로 나눠지는 숫자는 제외한다.
이렇게 생각하면 너무나 어려움. 한국말이 제일 어렵다(??)
구글링해보니까 쉽게 이해할 수 있는 순서도가 있었다.
난 이걸 그대로 따라해서 만들었다.
윤년 계산기 VER_1
#include <stdio.h>
int leap_year_cal(int year)
{
if(year % 4 == 0)
if(year % 100 == 0)
if(year % 400 ==0){
return 1;
}
else{
return 0;
}
else{
return 1;
}
else{
return 0;
}
}
int result(int leap_result, int year)
{
if(leap_result == 1)
{
printf("%d년은 윤년입니다.\n", year);
}
else if(leap_result == 0)
{
printf("%d년은 윤년이 아닙니다.\n", year);
}
}
int main(void)
{
int year;
printf("윤년 계산기에 오신것을 환영합니다!\n");
printf("확인하고 싶은 년도를 입력하세요: ");
scanf("%d", &year);
result(leap_year_cal(year), year);
return 0;
}
윤년이 잘 출력된다.
하지만 코드를 줄일 수 있다는 교수님의 말씀..
어떻게 하지?
그래서 가능한 조건만 윤년으로 하고 -> 나머지는 윤년 아님 으로 결과를 출력하자!라고 생각했다.
생각한 조건
그럼 (4로 나눠떨어지고 100으로 안 나눠떨어지고) OR (4, 100, 400으로 다 나눠떨어지면) 윤년이다!
그래서 코드를 다시 줄여봤다.
윤년계산기ver2
#include <stdio.h>
int leap_year_cal(int year)
{
if((year % 4 == 0 && year % 100 == 0 && year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)){
return 1;}
else{
return 0;}
}
int result(int leap_result, int year)
{
if(leap_result == 1)
{
printf("%d년은 윤년입니다.\n", year);
}
else if(leap_result == 0)
{
printf("%d년은 윤년이 아닙니다.\n", year);
}
}
int main(void)
{
int year;
printf("윤년 계산기에 오신것을 환영합니다!\n");
printf("확인하고 싶은 년도를 입력하세요: ");
scanf("%d", &year);
result(leap_year_cal(year), year);
return 0;
}
훨씬 코드가 짧아졌다.
++
else를 지우고 return 0;으로 생략하니 코드가 더 짧아졌다. 0은 false니까 어차피 상관 없을 듯하다.
아주깔끔하다. 만족!
'개발공부 > C언어' 카테고리의 다른 글
C언어_숫자야구 만들기 (0) | 2023.04.03 |
---|---|
C언어_김밥천국 포스기 만들기 (0) | 2023.04.03 |
C언어_붕어빵 심리테스트 만들기 (0) | 2023.03.30 |
C언어_로또뽑기 만들기 (0) | 2023.03.30 |
C언어_함수를 사용하여 스무고개 숫자게임 만들기 (0) | 2023.03.29 |