北大-计算概论
http://ica.openjudge.cn/baseb/04/
看到题目后,第一反应是:这题简单啊,做过好多遍了。于是,刷刷刷就把代码写完了:
#include<stdio.h>
main()
{
int zi,mu,i,n,t;
double sum;
scanf("%d",&n);
zi=2;
mu=1;
sum=0;
for(i=0;i<n;i++)
{
sum=sum+1.0*zi/mu;
t=mu;
mu=zi;
zi=t+zi;
}
printf("%.4lf\n",sum);
}
输入99,输出的结果却和sample不一样。
于是用tc单步调试,发现运行一段时间后sum会神奇般的变小。反应过来了,int的32767果然太小。
可是换成long,照样不行。
换成double,AC.
#include<stdio.h>
main()
{
int i,n;
double mu,zi,t;//看这儿!
double sum;
scanf("%d",&n);
zi=2;
mu=1;
sum=0;
for(i=0;i<n;i++)
{
sum=sum+1.0*zi/mu;
t=mu;
mu=zi;
zi=t+zi;
}
printf("%.4lf\n",sum);
}