C语言编程题斐波那契数列

C语言中,斐波那契数列相关的C语言编程题,包括计算斐波那契数列的第n项、打印斐波那契数列的前n项、使用递归和非递归方法实现斐波那契数列等。斐波那契数列的不同实现方法和应用,帮助学生理解递归与迭代、数组与动态内存分配等C语言的基础概念。

1、计算斐波那契数列的第n项(递归方法)

编写一个程序,使用递归方法计算斐波那契数列的第n项。

#include <stdio.h>

// 递归计算斐波那契数列的第n项
int fibonacci(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int n;
    printf("输入正整数: ");
    scanf("%d", &n);

    printf("%d 位置上的斐波那契数 %d\n", n, fibonacci(n));
    return 0;
}

2、 计算斐波那契数列的第n项(非递归方法)

编写一个程序,使用非递归方法(迭代)计算斐波那契数列的第n项。

#include <stdio.h>

// 非递归计算斐波那契数列的第n项
int fibonacci(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;

    int a = 0, b = 1, c;
    for (int i = 2; i <= n; ++i) {
        c = a + b;
        a = b;
        b = c;
    }
    return b;
}

int main() {
    int n;
    printf("输入正整数: ");
    scanf("%d", &n);

    printf("%d 位置上的斐波那契数 %d\n", n, fibonacci(n));
    return 0;
}

3、打印斐波那契数列的前n项(递归方法)

编写一个程序,使用递归方法打印斐波那契数列的前n项。

#include <stdio.h>

// 递归计算斐波那契数列的第n项
int fibonacci(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

// 打印斐波那契数列的前n项
void printFibonacci(int n) {
    for (int i = 0; i < n; ++i) {
        printf("%d ", fibonacci(i));
    }
    printf("\n");
}

int main() {
    int n;
    printf("输入正整数: ");
    scanf("%d", &n);

    printf("斐波那契数列的前 %d 项: ", n);
    printFibonacci(n);
    return 0;
}

4、打印斐波那契数列的前n项(非递归方法)

编写一个程序,使用非递归方法(迭代)打印斐波那契数列的前n项。

#include <stdio.h>

// 打印斐波那契数列的前n项(非递归)
void printFibonacci(int n) {
    int a = 0, b = 1, c;
    for (int i = 0; i < n; ++i) {
        printf("%d ", a);
        c = a + b;
        a = b;
        b = c;
    }
    printf("\n");
}

int main() {
    int n;
    printf("输入正整数: ");
    scanf("%d", &n);

    printf("斐波那契数列的前 %d 项: ", n);
    printFibonacci(n);
    return 0;
}

5、 使用数组存储斐波那契数列的前n项

编写一个程序,将斐波那契数列的前n项存储在一个数组中,并打印出来。

#include <stdio.h>

// 使用数组存储斐波那契数列的前n项
void fibonacci(int n, int arr[]) {
    if (n > 0) arr[0] = 0;
    if (n > 1) arr[1] = 1;
    for (int i = 2; i < n; ++i) {
        arr[i] = arr[i - 1] + arr[i - 2];
    }
}

int main() {
    int n;
    printf("输入正整数: ");
    scanf("%d", &n);

    int arr[n];
    fibonacci(n, arr);

    printf("斐波那契数列的前 %d 项: ", n);
    for (int i = 0; i < n; ++i) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

6、使用动态内存分配存储斐波那契数列的前n项

编写一个程序,使用动态内存分配(malloc)将斐波那契数列的前n项存储在一个数组中,并打印出来。

#include <stdio.h>
#include <stdlib.h>

// 使用动态内存分配存储斐波那契数列的前n项
int* fibonacci(int n) {
    int *arr = (int*)malloc(n * sizeof(int));
    if (arr == NULL) {
        printf("Memory allocation failed\n");
        exit(1);
    }

    if (n > 0) arr[0] = 0;
    if (n > 1) arr[1] = 1;
    for (int i = 2; i < n; ++i) {
        arr[i] = arr[i - 1] + arr[i - 2];
    }
    return arr;
}

int main() {
    int n;
    printf("输入正整数: ");
    scanf("%d", &n);

    int *arr = fibonacci(n);

    printf("斐波那契数列的前 %d 项: ", n);
    for (int i = 0; i < n; ++i) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);
    return 0;
}

推荐阅读
cjavapy编程之路首页