티스토리 뷰

반응형

 

4의 배수이면서 100의 배수는 아니고,

400의 배수인 연도는 윤년이다.

윤년이면 366일이고,

평년이면 365일이다.

 

사용자에게 연도를 입력받고

윤년인지를 출력해보자.

함수 is_leap(int year)로 작성한다.

 

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
void is_leap(int year);
 
int main()
{
    int year;
 
    printf("연도를 입력하시오 : ");
    scanf_s("%d"&year);
 
    is_leap(year);
    return 0;
}
 
void is_leap(int year)
{
    if ((year % 4 == 0 && year % 100 != 0|| (year % 400 == 0))
    {
        printf("%d년은 366일입니다.", year);
    }
 
    else
    {
        printf("%d년은 365일입니다.", year);
    }
}
 
cs

 

 

 

  - 결과  

 

 

 

  - 설명  

is_leap(int year)함수에

윤년의 조건이면 

366일을 출력하고,

평년의 조건이면

365일을 출력하는 내용을 선언한다.

 

main 함수에서

연도를 입력 받아

year에 저장하고 

is_leap 함수를 호출하여

저장한 year 변수를

매개변수로 전달한다.

 

C언어는 절차 지향적이기 때문에,

main 함수 앞에

사용자 정의 함수를 쓰려면

반환형 함수이름(매개변수 자료형);

의 형식인 함수 원형을 써서

컴파일러에게 함수에 대한 정보를

명시적으로 미리 알려주는 것이 좋다.

 

 

필자는 부끄럽게도

파이썬 언어와 C언어를 같이 공부하다 보니

is_leap() 함수 안에

int year가 아닌 year만 써주어

오류가 났는데도

도대체 왜 오류가 나는지

이해를 못하고 바둥바둥거렸다.

 

결론은 C언어는

매개변수에 int, float과 같은

자료형을 꼭 써줘야 한다는 것.

물론 매개변수가 필요 없고

단순 출력만 하는 함수는

void 상태로 가능하다.

 

함수 원형을 써주지 않고

사용자 정의 함수를

main 함수보다 먼저 선언하는 것도

컴파일 에러가 발생하니

주의하여야겠다.

반응형
댓글
반응형
Recent Post.
Recent Reply.
Thanks for comming.
오늘은
명이 방문했어요
어제는
명이 방문했어요