//C语言
//1.
#include<stdio.h>
void main()
{
double a[20000];
int n,i;
double sum=0,s;
scanf("%d",&n);
a[0]=2;
a[1]=3;
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<n;i++)
{
if(i==0)
{
s=a[i]/(i+1);
}
else if(i>0)
{
s=a[i]/a[i-1];
}
sum=sum+s;
}
printf("%.2lf",sum);
}
//2.
#include<stdio.h>
void main()
{
int a[20000];
int n,i;
double sum=0,s;
scanf("%d",&n);
a[0]=2;
a[1]=3;
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<n;i++)
{
if(i==0)
{
s=1.0*a[i]/(i+1);
}
else if(i>0)
{
s=1.0*a[i]/a[i-1];
}
sum=sum+s;
}
printf("%.2lf",sum);
}
你要考虑int和double的范围,也就是一个最大值的问题,i超过最大值后就不能表示正确的数值了,可能会变成负数的(涉及补码的规则)