#include <stdio.h>
int main(){
long int a=1,b=2,n,i,t;
double sum;
scanf("%ld",&n);
if(n<1)
printf("%d",-1);
else
{for(i=1,sum=0.00;i<=n;i++)
{sum=sum+b/a;
t=a;
a=b;
b=b+t;};
printf("%.1lf",sum);};
return 0;
}
#include <stdio.h>
int main(){
long int a=1,b=2,n,i,t;
double sum;
scanf("%ld",&n);
if(n<1)
printf("%d",-1);
else
{for(i=1,sum=0.00;i<=n;i++)
{sum=sum+b/a;
t=a;
a=b;
b=b+t;};
printf("%.1lf",sum);};
return 0;
}
知识点:c++的除法,如果除数和被除数都是整形,则计算结果是整形,即1/10的结果是0
注意for循环中的 sum=sum+b/a; 中的除法
两个操作数b和a都是整形,所以你懂的
改成:sum = sum + 1.0 * b / a;