求问一道关于c语言的题目
题目描述观察下面的式子,并找出其中的规律,计算前n项和。2/1+3/2+5/3+8/5+13/8+21/13…….输入Input每行输入1个整数n(0≤n≤100),当n...
题目描述
观察下面的式子,并找出其中的规律,计算前n项和。
2/1+3/2+5/3+8/5+ 13/8+ 21/13…….
输入
Input
每行输入1个整数n(0≤n≤100),当n=0时,表示输入结束,不做运算。
输出
Output
每个测试实例的输出占一行,结果保留3位小数。
#include<stdio.h>
#include<math.h>
int main()
{
int n,fenmu,fenzi,i;
double item,sum;
while (1)
{
scanf("%d\n",&n);
if(n==0)
break;
int a[n+1],b[n+1];
a[1]=2,b[1]=1;
a[2]=3,b[2]=2;
if(n==1)
printf("2.000\n");
else if(n==2)
printf("3.500\n");
else{
sum=3.5;
for(i=3;i<=n;i++)
{
fenzi=a[i-2]+a[i-1];
fenmu=b[i-2]+b[i-1];
item=1.0*fenzi/fenmu;
sum=sum+item;
}
printf("%.3lf\n",sum);
}
}
return 0;
}
这是我的代码,n较小时可以正确显示。但n到13时,就会显示-nan或者Inf
如何修改,求解 展开
观察下面的式子,并找出其中的规律,计算前n项和。
2/1+3/2+5/3+8/5+ 13/8+ 21/13…….
输入
Input
每行输入1个整数n(0≤n≤100),当n=0时,表示输入结束,不做运算。
输出
Output
每个测试实例的输出占一行,结果保留3位小数。
#include<stdio.h>
#include<math.h>
int main()
{
int n,fenmu,fenzi,i;
double item,sum;
while (1)
{
scanf("%d\n",&n);
if(n==0)
break;
int a[n+1],b[n+1];
a[1]=2,b[1]=1;
a[2]=3,b[2]=2;
if(n==1)
printf("2.000\n");
else if(n==2)
printf("3.500\n");
else{
sum=3.5;
for(i=3;i<=n;i++)
{
fenzi=a[i-2]+a[i-1];
fenmu=b[i-2]+b[i-1];
item=1.0*fenzi/fenmu;
sum=sum+item;
}
printf("%.3lf\n",sum);
}
}
return 0;
}
这是我的代码,n较小时可以正确显示。但n到13时,就会显示-nan或者Inf
如何修改,求解 展开
展开全部
#include<stdio.h>
#include<math.h>
int main()
{ int n,i;
double a[100],b[100];
double item,sum;
while (1)
{ scanf("%d",&n);
if(n==0)
break;
a[1]=2,b[1]=1;
a[2]=3,b[2]=2;
if(n==1)
printf("2.000\n");
else if(n==2)
printf("3.500\n");
else
{ sum=3.5;
for(i=3; i<=n; i++)
{
a[i]=a[i-2]+a[i-1];
b[i]=b[i-2]+b[i-1];
item=a[i]/b[i];
sum=sum+item;
}
printf("%.3lf\n",sum);
}
}
return 0;
}
其实上面的程序只需一个数组即可完成的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询