문제 정의
두 개의 수 x와 n을 입력받아 아래와 같은 등비수열의 합을 계산하는 프로그램을 작성해 보겠습니다.
1 + x + x² + x³ + x⁴ + …… + xⁿ
계산이 완료되면 x, n 그리고 합(sum)을 화면에 출력합니다.
해결 방법
C 언어에서는 math.h 헤더 파일에 포함된 pow() 함수를 사용하면 각 항의 거듭제곱 값을 손쉽게 구할 수 있습니다. 반복문과 함께 이 함수를 활용하면 등비수열의 합을 간단하게 계산할 수 있습니다.
알고리즘
등비수열의 합을 계산하는 알고리즘은 다음과 같습니다.
1단계 – 시작
2단계 – 반복 지점
3단계 – 실행 시점에 x와 n의 값을 입력받는다
4단계 – 만약 n > 0이라면
4.1단계: i = 0부터 n까지 반복한다
4.1.1단계: sum = sum + pow(x, i)
4.1.2단계: i = i + 1
4.2단계: x, n, sum을 출력한다
5단계 – 그렇지 않다면(else)
5.1단계: "유효하지 않은 n 값"이라는 메시지를 출력한다
5.2단계: 2단계로 되돌아간다(goto)
6단계 – 조건문 종료
7단계 – 종료
순서도
위 알고리즘의 처리 흐름을 시각적으로 나타낸 순서도는 다음과 같습니다.

C 프로그램 코드
다음은 등비수열의 합을 계산하는 C 프로그램의 전체 소스 코드입니다.
#include <stdio.h>
#include <conio.h>
#include <math.h>
main(){
int x,n,sum=0,i;
start:
printf("enter the values for x and n:");
scanf("%d%d",&x,&n);
if(n>0){
for(i=0;i<=n;i++){
sum = sum+pow(x,i);
}
printf("The sum of the geometric progression is:%d",sum);
}
else{
printf("not a valid n:%d value",n);
getch();
goto start;
}
}코드 설명: 프로그램은 먼저 사용자로부터 x와 n을 입력받습니다. n이 0보다 크면 for 반복문을 통해 i가 0부터 n까지 증가하면서 pow(x, i), 즉 x의 i제곱 값을 sum에 누적합니다. 반복이 끝나면 최종 합을 출력합니다. 만약 n이 0 이하로 입력되면 유효하지 않은 값임을 알리고 다시 입력을 받도록 goto 문으로 처음으로 돌아갑니다.
참고: Linux 환경에서 컴파일할 경우 math 라이브러리를 연결하기 위해
-lm옵션(예:gcc program.c -lm)을 함께 사용해야 할 수 있습니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
enter the values for x and n:4 5 The sum of the geometric progression is:1365
x = 4, n = 5를 입력한 경우, 수열은 1 + 4 + 16 + 64 + 256 + 1024가 되며, 이들의 합인 1365가 정상적으로 출력되는 것을 확인할 수 있습니다.