gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:12:12 24 4
gpt4 key购买 nike

我需要用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com