永发信息网

C语言编程 求序列前N项和

答案:2  悬赏:60  手机版
解决时间 2021-03-20 04:50
  • 提问者网友:轻浮
  • 2021-03-19 17:26
C语言编程 求序列前N项和
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-03-19 18:57
2/1+3/2+5/3+8/5+...这个数列每项的分子、分母分别是Fibonacci数列的后一项与前一项。求这一数列前N项的和可采取N由键盘输入,设一循环按Fibonacci数列规律求出分子与分母,将将分式转换为浮点除法求值累加获得最后结果。举例代码如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int a,b,i,N;
double s;
printf("Input N(int 0 N=");//大于43时int范围溢出
if(scanf("%d",&N)!=1 || N<1 || N>43){//保证输入正确
printf("Input error, exit...
");
return 0;
}
for(s=0.0,a=2,b=i=1;i<=N;i++){//由此循环计算
s+=a/(b+0.0);//当前项累加给s
a+=b;//下一项的分子是当前项分子分母之和
b=a-b;//下一项分母是当前项分子
}
printf("The result are %.2f (when N=%d)
",s,N);
return 0;
}试运行结果如下图:


全部回答
  • 1楼网友:爱难随人意
  • 2021-03-19 19:15
#include "stdio.h"

int main(void)
{int x,y,i,N,t;
float sum;
scanf("%d",&N);
x=2;
y=1;
sum=0;
for(i=1;i<=N;i++)
{sum=sum+((float)x/y);
t=x;
x=x+y;
y=t;
}
printf("%.2f",sum);
return 0;
}
没有错啊,难道是大写N,还是少了int void?不会吧
还是全部改float?用double是30.660261,用float是30.660259。。。。。。追问题目上的要求是需要精确到小数点后两位,还有就是计算结果不超过双精度范围。
对了 这个I算结果不超过双精度范围是个啥意思。
你也觉得程序没啥问题?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯