新手提个简单的C问题

amocy110 2009-06-15 09:33:42
有一数列:
2/1,3/2,5/3,8/5,13/8,21/13,34/21......
求此数列前20项之和。
此数列分子和分母分别都等于前2项分子和分母之和!
...全文
28 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
codelabs 2009-06-18
  • 打赏
  • 举报
回复
呜呜,LZ的结贴率为0 汗,白忙了
codelabs 2009-06-18
  • 打赏
  • 举报
回复
void main()
{
/*分子列 分母列 */
int i=2; int j=1;
int m=3; int n=2;
float sum=0;

int count=0;
for(;count<20;count++)
{
/* 第一次相加 */
sum+=(float)i/j+(float)m/n;

/* 改变第三项:第一个和第二个的和 */
i=i+m;
j=j+n;
/*改变第四项:第二个和第三个的和*/
m=i+m;
n=j+n;

}
printf("%f",sum);

printf("\n结果为: 65.020950");//本句话是告诉你答案是正确的
getchar();

}


接分。我已经调试通过了.做人要厚道,给分是必须的呵呵。
wxdcxp 2009-06-16
  • 打赏
  • 举报
回复
我用c++builder·写的为什么会错?

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int m[20],n[20],i;
float s,sum ;
m[0]=2;
m[1]=3;
n[0]=1;
n[1]=2;
s=0;

for(i=2;i<20;i++)
{

s+= (m[i-1]+m[i-2])/(n[i-2]+n[i-1]);
}
sum=s+3.5;
Edit1->Text=sum;

}
smart_fish8 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 amocy110 的帖子:]
有一数列:
2/1,3/2,5/3,8/5,13/8,21/13,34/21......
求此数列前20项之和。
此数列分子和分母分别都等于前2项分子和分母之和!
[/Quote]
#include<stdio.h>
main()
{int a=1;b=2,i,s=0;
for(i=1;i<=20;i++)
{a=a+b;
s+=b/a;
temp=a
a=b;
b=temp;
}
}
有事要走,所以没时间运行,可能还有些小错误。
思路是这样的,先算b/a;再让a为前两数之和,再交换a,b的值,
superstar_pig 2009-06-16
  • 打赏
  • 举报
回复
最好写出共通代数式,然后n = 20代入。这样精确度高。
太乙 2009-06-15
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
int a = 2, b = 1;
int c = 3, d = 2;
float f = (float)a/(float)b + (float)c/(float)d;
int p,q;
for (int i = 0; i < 20 ; i++)
{
p = a + c;
q = b + d;
f += (float)p/(float)q;
a = c;
b = d;
c = p;
d = q;
}
cout<<f<<endl;
return 0;
}
amocy110 2009-06-15
  • 打赏
  • 举报
回复
用数组是很容易的
如果不使用数组呢?
陽洸膂珵 2009-06-15
  • 打赏
  • 举报
回复
不好意思,改下!!
#include<stdio.h>
void main()
{
float sum=0,a=2.0,b=1.0,s,t;
int i;
for(i=0;i<20;i++)
{ s=a/b;
sum=sum+s;
t=b;
b=a;
a=t+b;
}
printf("%f",sum); getch();
}
陽洸膂珵 2009-06-15
  • 打赏
  • 举报
回复
2/1,3/2,5/3,8/5,13/8,21/13,34/21......
#include<stdio.h>
void main()
{
float sum=0,a=2,b=1,s,t;
int i;
for(i=0;i<20;i++)
{
sum=sum+s;
s=a/b;
t=a;
b=a;
a=t+b;
}
printf("%d",sum);
}
  • 打赏
  • 举报
回复
[Quote=引用楼主 amocy110 的帖子:]
有一数列:
2/1,3/2,5/3,8/5,13/8,21/13,34/21......
求此数列前20项之和。
此数列分子和分母分别都等于前2项分子和分母之和!
[/Quote]

如果不溢出的话,可以先乘法,最好来一次浮点除法。
如果怕溢出,那就每次都浮点除法吧
amocy110 2009-06-15
  • 打赏
  • 举报
回复
请高手出个程序,谢谢!
acdbxzyw 2009-06-15
  • 打赏
  • 举报
回复
a[20] = {2.0, 3.0};
b[20] = {1.0, 2.0};
sum = 0;
sum += a[0]/b[0] + a[1]/b[1];
for(i=2;i<20;i++)
{
a[i] = a[i-1]+a[i-2];
b[i] = b[i-1]+b[i-2];
sum += a[i]/b[i];
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧