编译没有错><但是一直输出的都是错误的数字
#include<stdio.h>
int main(void)
{
int m,n,F;
int fib(int m,int n);
printf("Enter m,n(1≤m,n≥1000):");
scanf("%d%d",&m,&n);
F=fib(m,n);
printf("F=%d",F);
return 0;
}
int fib(int m,int n)
{
int k,i,pr1,pr2,s;
if(k==1||k==2)
s=1;
else i=3,pr1=1,pr2=2;
while(i<=k){
s=pr1+pr2;
pr1=pr2;
pr2=s,i++;
}
return s;
}
题目是这个:
输入两个正整数m和n(1≤m,n≤1000),输出m~n之间的所有的Fibonacci数。Fibonacci数列(第1项起):1、1、2、3、5、8、13、21、…要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。
OTZ因为明天要交作业所以很着急……求帮助,谢谢
C语言 输出答案一直为-858993460
答案:4 悬赏:80 手机版
解决时间 2021-03-19 19:09
- 提问者网友:箛茗
- 2021-03-19 05:50
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-03-19 06:56
定义存储空间不足,发生溢出错误
long F;
正确程序如下:
#include<stdio.h>
int main(void)
{
int i,m,n;
int fib(int n);
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
while(m>=1&&n<=10000&&m<=n)
{
for(i=1;i<=n;i++)
if(fib(i)>=m&&fib(i)<=n)
printf("%d ",fib(i));break;
}
return 0;
}
int fib(int n)
{
if(n==1)
return 1;
if(n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
long F;
正确程序如下:
#include<stdio.h>
int main(void)
{
int i,m,n;
int fib(int n);
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
while(m>=1&&n<=10000&&m<=n)
{
for(i=1;i<=n;i++)
if(fib(i)>=m&&fib(i)<=n)
printf("%d ",fib(i));break;
}
return 0;
}
int fib(int n)
{
if(n==1)
return 1;
if(n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
全部回答
- 1楼网友:野味小生
- 2021-03-19 08:53
#include<stdio.h>
int fib(int n)
{
if(n==1||n==2)
return 1;
else
return fib(n-2)+fib(n-1);
}
int main(void)
{
int m,n,i;
printf("Enter m,n(1≤m,n≥1000):");
scanf("%d%d",&m,&n);
for(i=1;;i++)
{
if(fib(i)>=m&&fib(i)<=n)
{
printf("%d,",fib(i));
}
if(fib(i)>n)
break;
}
return 0;
}
仔细看了一下,你的代码完全没按照题目来,所以就全给你改了...
- 2楼网友:有你哪都是故乡
- 2021-03-19 08:32
太乱了,读不下来。下面提供一个C的看看符合不符合你的题意……
#include "stdio.h"//
int fib(int n){
int a,b,i;
if(n==1 || n==2) return 1;
for(a=b=1,i=2;i<n;b=a+b,a=b-a,i++);
return b;
}
void main(void){
int m,n,F,i;
printf("Enter m,n(1<=m,n<=1000):");
scanf("%d%d",&m,&n);
i=1;
while((F=fib(i++))<m);i--;
while((F=fib(i++))<n)
printf("%d ",F);
printf("\n");
}
- 3楼网友:末日狂欢
- 2021-03-19 07:09
把第二个函数改为double 型就可以啦
#include "stdio.h"
double qiuhe(int n)
{
double re=0;
int i;
for(i=1;i<=n;i++)
{
re+=i;
}
return re;
}
double qiupfhe(int n)
{
double re=0;
int i;
for(i=1;i<=n;i++)
{
re+=i*i;
}
return re;
}
double qiudshe(int n)
{
double re=0;
int i;
for(i=1;i<=n;i++)
{
re+=1.0/i;
}
return re;
}
main()
{
double res;
res=qiuhe(100)+qiupfhe(50)+qiudshe(10);
printf("%.4f\t",res);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯