C语言编程计算Fibonacci数列的前50项,并把结果存放在一个数组中,怎么编写
2个回答
展开全部
#include<stdio.h>/*若干项之后,这个值已经超出了int所能表示的范围了,所以不能用int来表示*/typedef unsigned long long int uint64;int main(){//int a[50],i;uint64 a[50];int i;a[0]=1;//a[1]=2;a[1]=1;printf("201723020602谷金鹏\n");printf("1,1,");//for(i=1;i<=49;i++)for(i=2;i<50;i++){a[i]=a[i-1]+a[i-2];//printf("%d,",a[i]);printf("%llu,",a[i]);}return 0;}
展开全部
斐波那契数列50项已经远远超出了int型变量所能存储的范围。确定要输出这么多列么。。。
题主核心目的是要计算方法吧,而不是非得50项?
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define ARR_LEN 255 /*数组长度上限*/
#define elemType int /*元素类型*/
/* n项斐波那契数列 */
/* Fibonacci sequence */
/* 由0和1开始,之后诸项由之前的两数相加而得出 */
/* F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2 (n≥2) */
int fibonacciSeq (elemType F[], int n) {
int i;
if (n > 46) /* 4字节int最大值为2147483647,故最大支持F46 = 1836311903 */
return 0;
F[0] = 0; F[1] = 1;
for (i=2; i<=n; i++)
F[i] = F[i-1] + F[i-2];
return 1;
}
/*打印数组*/
/* elemType arr[]: 打印目标数组; int len: 元素个数 */
void printArray (elemType arr[], int len) {
int i;
for (i=0; i<=len; i++) {
printf ("%d", arr[i]);
if (i!=len)
printf (", ");
}
putchar ('\n');
}
int main (void) {
elemType F[ARR_LEN];
int n;
int status;
memset (F, 0, sizeof (F)); /* 数组所有元素初始化为0 */
n = 20;
status = fibonacciSeq (F, n);
if (status) {
printf ("The first %d Fibonacci numbers Fn for n = 0, 1, 2, ..., %d are: \n", n, n);
printArray (F, n);
}
else
puts ("Error!");
getch (); /*屏幕暂留*/
return 0;
}
追问
的确是要50项,而且真的超出了长度产生负值什么的,所以需要一个清楚明了的程序
追答
目的就是要看 超过int型范围后的表现么?
稍改动一下,你看看效果
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define ARR_LEN 255 /*数组长度上限*/
#define elemType int /*元素类型*/
/* n项斐波那契数列 */
/* Fibonacci sequence */
/* 由0和1开始,之后诸项由之前的两数相加而得出 */
/* F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2 (n≥2) */
int fibonacciSeq (elemType F[], int n) {
int i;
F[0] = 0; F[1] = 1;
for (i=2; i<=n; i++)
F[i] = F[i-1] + F[i-2];
return 1;
}
/*打印数组*/
/* elemType arr[]: 打印目标数组; int len: 元素个数 */
void printArray (elemType arr[], int len) {
int i;
for (i=0; i<=len; i++) {
printf ("%d", arr[i]);
if (i!=len)
printf (", ");
}
putchar ('\n');
}
int main (void) {
elemType F[ARR_LEN];
int n;
int status;
memset (F, 0, sizeof (F)); /* 数组所有元素初始化为0 */
n = 50;
status = fibonacciSeq (F, n);
if (status) {
printf ("The first %d Fibonacci numbers Fn for n = 0, 1, 2, ..., %d are: \n", n, n);
printArray (F, n);
}
else
puts ("Error!");
getch (); /*屏幕暂留*/
return 0;
}
如果就是要正确地输出50项,那需要用8字节的long long型来存储
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询