贵州卫视《亮剑》:C语言编程题17

来源:百度文库 编辑:高校问答 时间:2024/04/28 00:51:05
编写函数int fun(int m,int n,int *p),要求将范围[m,n]之间所有的
fibonacci数写入p所指的一维数组中,fibonacci数的个数通过函数返回值
带回.例如,[0,30]之间的fibonacci数有7个,它们是:1 2 3 5 8 13 21
而[1000,32767]之间有7个,它们是:1597 2584 6765 10946 17711 28657 */

int fun(int m,int n,int *p)
{
}
main()
{int a,b,n,c[22],i;
scanf("%d%d",&a,&b);
n=fun(a,b,c);
for(i=0;i<n;i++)
printf("%6d",c[i]);
printf("\nn=%d\n",n);
}

以下程序已通过调试
题目中:[1000,32767]之间有7个,它们是:1597 2584 6765 10946 17711 28657 好象漏了一个吧。4181

#include <stdio.h>
#include <string.h>
int fun(int m,int n,int *p)
{
int k=0,a=0,b=1,tmp;
for (tmp=a+b;tmp<m;tmp=a+b){a=b;b=tmp;}/*寻找第1个数*/
for (;tmp<=n;)
{
p[k++]=tmp;
a=b;
b=tmp;
tmp=a+b;
}
return k;
}
main()
{int a,b,n,c[22],i;
scanf("%d%d",&a,&b);
n=fun(a,b,c);
for(i=0;i<n;i++)
printf("%6d",c[i]);
printf("\nn=%d\n",n);
}