C Programming/윤성우의 열혈 C 프로그래밍

[열혈 C 코딩] Chapter 9 함수 문제&풀이

All리얼 개발자 2025. 3. 24. 06:00

문제 09-1

 

문제 1.

세 개의 정수를 인자로 전달받아서 그중 가장 큰 수를 반환하는 함수와 가장 작은 수를 반환하는 함수를 정의해 보자(함수 선언 사용 X). 그리고 이 함수들을 호출하는 적절한 main 함수도 작성해 보자!

더보기

 

나만의 코드 설명: 간단한 함수 구현

&&(AND 연산자): A와 B 모두 참이어야 결과가 참.

함수 정의:
int(반환형태) max( (매개변수) )
{
 (함수의 기능 구현) 
}

 

 

문제 2.

섭씨(Celsius) 온도를 입력하면 화씨(Fahrenheit) 온도를 반환하는 CelToFah라는 이름의 함수와 그 반대로 화씨온도를 입력하면 섭씨온도를 반환하는 FahToCel라는 이름의 함수를 정의하고 이 두 함수를 호출하는 예제를 완성해 보자. 참고로 섭씨와 화씨 간 온도변환의 공식은 다음과 같다(마찬가지로 함수 선언은 하지 않는다)

Fah = 1.8 X Cel + 32

 

 

문제 3.

인자로 전달된 수만큼의 피보나치 수열을 출력하는 함수를 정의해 보자. 예를 들어서 프로그램 사용자가 5를 입력하면 0 에서부터 시작해서 총 5개의 피보나치 수열을 출력해야 한다. 참고로 피보나치 수열은 다음과 같다.

 

 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 

 

이렇듯 피보나치 수열은 0과 1에서 시작한다. 그리고 세 번째 이후의 수열부터는 이전의 두 값의 합으로 구성된다. 즉, 세 번째 수는 0과 1의 합으로 이뤄져서 1이 되고, 네 번째 수는 1과 1의 합으로 이뤄져서 2가 된다.

더보기

 

나만의 코드 설명: 피보나치 수열에 대한 이해 

피보나치 수열은 항상 0과 1로 시작한다. 그래서 항의 개수가 1개면 0만 출력되고,
2개 이상이면 0, 1은 기본으로 출력된다. 마지막 for문은 입력한 정수 중에서 0과 1 다음의 값들을 출력하기 위한 목적이다.

 

 

 

문제 09-2

다음은 프로그램 사용자가 입력하는 값을 누적하여 그 합계를 출력하는 예제이다. 

위의 예제에서는 함수 AddToTotal에서의 사용을 목적으로 전역변수 total을 선언하였는데, 이를 static 변수로 대체해 보자.  단, static 변수로의 대체과정에서 main 함수의 변경은 없어야 하며 실행결과도 동일해야 한다. 

더보기

 

나만의 코드 설명: Static와 전역변수에 대한 이해

전역변수 int total = 0;을 AddToTotal 함수 안으로 가져오고 static을 붙여주기만 하면 된다. 
static변수는 전역변수처럼 프로그램이 종료될 때까지 메모리에 남아 있지만, 선언된 함수나 파일 내부에서만 접근할 수 있는 제한된 범위(scope)를 가진다. 
즉, 일반 변수와 다르게 함수가 끝나도 static 변수의 값은 끝까지 남아서 누적된다는 특징이 있다.