C 언어는 math.h 헤더 파일을 통해 다양한 수학 함수를 기본으로 제공합니다. 별도의 복잡한 연산 로직을 직접 작성하지 않아도 거듭제곱, 제곱근, 올림·내림 등을 한 줄의 함수 호출로 처리할 수 있습니다. 이 글에서는 대표적인 수학 함수인 pow()와 ceil()을 활용하는 방법을 예제와 함께 살펴봅니다.
문제 상황
C 프로그래밍 언어를 사용해 임의로 주어진 숫자의 세제곱근(cube root)을 어떻게 구할 수 있을까요?
해결 방법
세제곱근은 거듭제곱 함수 pow()를 이용해 지수를 1/3으로 설정하면 간단하게 계산할 수 있습니다. 즉, x의 세제곱근은 pow(x, 1.0/3.0)과 같이 표현됩니다.
알고리즘
1단계: 실행 시점에 숫자를 입력받는다 2단계: 콘솔에서 값을 읽어온다 3단계: 결과를 계산한다 → result = pow(number, 1.0/3.0) 4단계: 계산 결과를 출력한다
예제 1: 세제곱근 구하기
다음은 입력받은 숫자의 세제곱근을 구하는 C 프로그램입니다.
#include <stdio.h>
#include <math.h>
int main(void) {
int number;
double result;
printf("숫자를 입력하세요: ");
scanf("%d", &number);
result = pow(number, 1.0 / 3.0); // 세제곱근 계산
printf("\n%d의 세제곱근은 %.2f입니다.\n", number, result);
return 0;
}
참고: 일부 교재에서는 conio.h와 getch()를 사용하지만, 이들은 표준 C가 아닌 컴파일러 종속 기능입니다. 이식성을 위해 위 예제처럼 표준 입출력 함수만 사용하는 것이 좋습니다.
실행 결과
숫자를 입력하세요: 27 27의 세제곱근은 3.00입니다.
예제 2: ceil() 함수로 올림 처리하기
ceil()은 인자로 받은 값보다 크거나 같은 정수 중 가장 작은 값을 반환하는 올림 함수입니다. 특히 음수에서는 단순히 '소수점 버림'이 아니라 '큰 방향의 정수'로 올라간다는 점에 유의해야 합니다. 예를 들어 -4.2의 올림 결과는 -4.0입니다.
#include <stdio.h>
#include <math.h>
int main(void) {
float num1, num2, num3;
printf("실수 3개를 입력하세요:\n");
scanf("%f %f %f", &num1, &num2, &num3);
printf("number1 = %.1lf\n", ceil(num1));
printf("number2 = %.1lf\n", ceil(num2));
printf("number3 = %.1lf\n", ceil(num3));
return 0;
}
실행 결과
실수 3개를 입력하세요: 3.7 -4.2 -6.7 number1 = 4.0 number2 = -4.0 number3 = -6.0
자주 사용되는 math.h 수학 함수 정리
- pow(x, y) : x의 y제곱을 반환
- sqrt(x) : x의 제곱근을 반환
- cbrt(x) : x의 세제곱근을 반환 (C99 표준부터 지원)
- ceil(x) : x를 올림한 정수를 반환
- floor(x) : x를 내림한 정수를 반환
- fabs(x) : x의 절댓값을 반환
참고로 C99 표준부터는 cbrt() 함수가 제공되므로, 세제곱근을 구할 때 pow(number, 1.0/3.0) 대신 cbrt(number)를 사용하면 더 직관적이고 정확하게 처리할 수 있습니다.