c - 声明一个数组 fib[22]。如果用户要求第 22 个或更大的斐波那契数,则输出错误消息

标签 c arrays error-handling fibonacci

我需要用C语言声明一个数组fib[22],如果用户输入大于22的数字,我需要输出错误消息。有人可以帮我解决这个问题吗?

到目前为止,我的代码仅输出斐波那契数的结果。有人可以进一步帮助我吗?

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

int main(int argc, char ** argv)
{
    if(argc != 2){
        fprintf(stderr, "usage: %s number\n", argv[0]);
        return(1);
    }

    int n ;
    n = atoi(argv[1]);
    int i;
    if (n <= 1)
        printf("%d\n", n);
    else {
        int f[n + 1];
        f[0] = 0;
        f[1] = 1;

        for (i = 2; i <= n; i++){
            *(f + i) = *(f + i - 1) + *(f + i - 2);
        }
        printf("%d\n", f[n]);
    }
    return(0);
}

最佳答案

为了获得最佳实践,您应该在执行任何流程之前检查输入。这可确保程序在打印任何数字之前停止运行。

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

int main(int argc, char ** argv)
{
    if(argc != 2){
        printf(stderr, "usage: %s number\n", argv[0]);
        return(1);
    }
    //store the 2nd argument in variable for value comparison.
    int n ;
    n = atoi(argv[1]);
    if (n > 22) {
        printf(stderr, "number must be less then 22\n");
        return(1);
    }


    int i;
    if (n <= 1)
        printf("%d\n", n);
    else {
        int f[n + 1];
        f[0] = 0;
        f[1] = 1;

        for (i = 2; i <= n; i++){
            *(f + i) = *(f + i - 1) + *(f + i - 2);
        }
        printf("%d\n", f[n]);
    }
    return(0);
}

关于c - 声明一个数组 fib[22]。如果用户要求第 22 个或更大的斐波那契数,则输出错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37605540/

相关文章:

sql - 使用宏将值传递给查询时,是否可以在不存在值的情况下继续查询?

python - 为什么我的输入错误陷阱不能按我预期的方式工作?

c - valgrind 测试内存管理出错?

C:指向结构中函数的指针

C 指向数组最后一个元素的指针

c# - 如何从 appsettings.json 文件中的对象数组读取值

java - 数组计数

c - 如何更高效地实现矩阵公式?

java - 循环java中的值之和

error-handling - Kafka 错误处理 : Processor. output().send(message, kafkaTimeoutInMS) 始终返回 true 及其异步