C 언어로 피보나치 수열 생성하기

CBeginner
지금 연습하기

소개

이 실습에서는 C 언어로 피보나치 수열을 생성하는 방법을 배웁니다. 피보나치 수열은 각 숫자가 바로 앞의 두 숫자의 합인 잘 알려진 수학적 수열입니다. 사용자로부터 항의 개수를 입력받은 후 루프를 사용하여 수열을 생성하고, 마지막으로 생성된 피보나치 수열을 출력합니다. 이 실습은 C 프로그래밍 언어를 사용하여 수론 및 이산수학의 기본 개념을 다룹니다.

항의 개수 읽기

이 단계에서는 C 언어로 피보나치 수열을 생성하기 위한 항의 개수를 읽는 방법을 배웁니다. 이는 피보나치 수열 프로그램을 만드는 첫 번째 중요한 단계입니다.

먼저 ~/project 디렉토리에 새로운 C 파일을 생성합니다.

cd ~/project
nano fibonacci.c

이제 사용자로부터 항의 개수를 읽는 초기 코드를 작성합니다.

#include <stdio.h>

int main() {
    int n;

    printf("피보나치 수열의 항의 개수를 입력하세요: ");
    scanf("%d", &n);

    printf("%d개의 항을 입력했습니다.\n", n);

    return 0;
}

컴파일 및 실행하여 입력을 테스트해 봅시다.

gcc fibonacci.c -o fibonacci
./fibonacci

예시 출력:

피보나치 수열의 항의 개수를 입력하세요: 10
10개의 항을 입력했습니다.
설명
  • scanf("%d", &n)은 사용자로부터 정수 입력을 읽어 변수 n에 저장합니다.
  • printf()를 사용하여 사용자에게 메시지를 표시하고 입력된 항의 개수를 출력합니다.
  • 프로그램은 수열의 길이에 대한 사용자 입력을 성공적으로 받을 수 있는지 확인합니다.

루프를 사용하여 항 생성

이 단계에서는 루프를 사용하여 피보나치 수열을 생성하도록 이전 피보나치 수열 프로그램을 수정합니다. 이전 단계의 코드를 기반으로 실제 피보나치 수열을 생성합니다.

fibonacci.c 파일을 업데이트합니다.

cd ~/project
nano fibonacci.c

이제 for 루프를 사용하여 피보나치 항을 생성하도록 코드를 수정합니다.

#include <stdio.h>

int main() {
    int n, first = 0, second = 1, next;

    printf("피보나치 수열의 항의 개수를 입력하세요: ");
    scanf("%d", &n);

    printf("%d개 항의 피보나치 수열: \n", n);

    for (int i = 0; i < n; i++) {
        if (i <= 1)
            next = i;
        else {
            next = first + second;
            first = second;
            second = next;
        }
        printf("%d ", next);
    }
    printf("\n");

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc fibonacci.c -o fibonacci
./fibonacci

예시 출력:

피보나치 수열의 항의 개수를 입력하세요: 10
10개 항의 피보나치 수열:
0 1 1 2 3 5 8 13 21 34
설명
  • firstsecond를 피보나치 수열의 첫 두 항으로 초기화합니다.
  • for 루프는 이전 두 항을 더하여 다음 항을 생성합니다.
  • next = first + second는 다음 항을 계산합니다.
  • 각 반복에서 firstsecond를 업데이트하여 수열의 진행을 유지합니다.
  • 루프는 지정된 항의 개수가 생성될 때까지 계속됩니다.

수열 출력

이 마지막 단계에서는 피보나치 수열 프로그램을 개선하여 출력 형식을 추가하고 출력 표현을 향상시킵니다.

수열 출력을 개선하기 위해 fibonacci.c 파일을 업데이트합니다.

cd ~/project
nano fibonacci.c

코드를 수정하여 더 많은 형식 및 출력 옵션을 추가합니다.

#include <stdio.h>

int main() {
    int n, first = 0, second = 1, next;

    printf("피보나치 수열의 항의 개수를 입력하세요: ");
    scanf("%d", &n);

    printf("%d개 항의 피보나치 수열:\n", n);

    printf("인덱스\t값\n");
    printf("-----\t-----\n");

    for (int i = 0; i < n; i++) {
        if (i <= 1)
            next = i;
        else {
            next = first + second;
            first = second;
            second = next;
        }
        printf("%d\t%d\n", i, next);
    }

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc fibonacci.c -o fibonacci
./fibonacci

예시 출력:

피보나치 수열의 항의 개수를 입력하세요: 8
8개 항의 피보나치 수열:
인덱스	값
-----	-----
0	0
1	1
2	1
3	2
4	3
5	5
6	8
7	13
설명
  • 인덱스와 값 열이 있는 형식화된 표를 추가했습니다.
  • \t는 탭으로 구분된 열을 사용하여 깔끔한 표 레이아웃을 만듭니다.
  • 각 항은 이제 해당 인덱스와 함께 출력됩니다.
  • 출력은 피보나치 수열의 명확하고 구조화된 보기를 제공합니다.

요약

이 실험에서는 사용자로부터 항의 개수를 입력받아 C 언어로 피보나치 수열을 생성하는 방법을 배웠습니다. 먼저 사용자에게 원하는 항의 개수를 입력하도록 요청한 후, 루프를 사용하여 피보나치 수열을 계산하고 출력합니다. 핵심 단계는 첫 두 피보나치 수를 초기화하고, 루프의 각 반복에서 이들을 업데이트하여 수열의 다음 숫자를 생성하는 것입니다.

마지막으로, 사용자의 입력에 따라 완전한 피보나치 수열을 출력합니다. 이 실험은 루프와 변수를 사용하여 프로그래밍 언어에서 고전적인 수학적 수열을 생성하는 실제적인 예시를 제공합니다.