C循环结构

有数列:2/1,3/2,5/3,8/5,13/8,21/13,编程实现,由键盘输入n,计算输出数列前n项和(结果保留四位小数)
四楼的,我输入20答案就是正确的32.6603,但是我输入30,答案就错了,正确答案应该是88.0403

第1个回答  2008-04-12
#include"stdio.h"
int main()
{
float sum=0.0,a=2.0,b=1.0,c;
int i=1,n;
printf("请输入n的值:");
scanf("%d",&n);
while(i<=n)
{
sum+=a/b;
c=a;
a=a+b;
b=c;
i++;
}
printf("%6.4f",sum);
return 0;
}
这个数列分子分母都是斐波那契数列,即分子这一项为前两项分子的和,同理分母.我为这个写了个函数:
#include"stdio.h"
#define N 30
int main()
{
float a[N],b[N];
int i;
a[0]=2;a[1]=3;b[0]=1;b[1]=2;
float sum=a[0]/b[0]+a[1]/b[1];
printf("前2项和为%6.4f\n",sum);
for(i=2;i<N;i++)
{
a[i]=a[i-1]+a[i-2];
b[i]=b[i-1]+b[i-2];
sum+=a[i]/b[i];
printf("第%d是%f\n",i-2,a[i-2]);
printf("第%d是%f\n",i-1,a[i-1]);
printf("第%d是%f\n",i,a[i]);
printf("第%d是%f\n",i-2,b[i-2]);
printf("第%d是%f\n",i-1,b[i-1]);
printf("第%d是%f\n",i,b[i]);
printf("前%d和为%6.4f\n",i+1,sum);
}
printf("%6.4f",sum);
return 0;
}
你自己运行一下看看,这个运行的过程.谢谢!
第2个回答  2008-04-09
#include<stdio. h>
void main()
{ int n,a=2,b=1,i,temp;
float sum=0;
printf("please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=a/b;
temp=b;
b=a;
a=temp+a;
}
printf("the sum is %f",sum);
}本回答被提问者采纳
第3个回答  2008-04-09
#include<iostream.h>
void main(){
float sz[];
int i,j,m;
int sum=0;
cout<<"input the total num."<<i<<endl;
cout<<"输入目标数列"<<endl;
for(i=0;i<j;i++)
cin>>sz[i]>>endl;
cout<<"input the num."<<m<<;
if(m<=0&&m>=j)
cout<<"wrong"<<endl;
exit(0);
for( m=0;m<=j;m++)
{
sum+=sz[];
}
cout<<sum<<endl;
}

写来玩。不好请见谅
第4个回答  2008-04-09
求前20次:
#include<stdio.h>
void main()
{
float fz1=2,fm1=1,s=2,t=1.5;
int fz2=3,fm2=2,i=1;
while(i<20)
{
s+=t,i++;
fz1+=fz2;
fm1+=fm2;
t=fz1/fm1;
}
printf("%f\n",s);
}
第5个回答  2008-04-09
#include<iostream>
using namespace std;
int main()
{
int n,i;
double sum=0,a=2,b=1,temp;
cout << "please input n:";
cin >> n;
for(i=1;i<=n;i++)
{
sum+=a/b;
temp=b;
b=a;
a=temp+a;
}
cout << sum << endl;
return 0;
}
相似回答