永发信息网

C语言 输出答案一直为-858993460

答案:4  悬赏:80  手机版
解决时间 2021-03-19 19:09
  • 提问者网友:箛茗
  • 2021-03-19 05:50
编译没有错><但是一直输出的都是错误的数字
#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因为明天要交作业所以很着急……求帮助,谢谢
最佳答案
  • 五星知识达人网友:摆渡翁
  • 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);
}
全部回答
  • 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); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯