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