假设你定义了两个变量
doubule s; int n;
运算
scanf(“%d”,&n);
for( ; n ; n- -)
{
s=1/(n*(n+1));
}
你会发现得出的s永远都是0
很简单的道理但找错的时候很不容易关注到
。
。
即:
整型变量在计算的时候如果结果不为整数会强制取整(似乎是向下取整)
比如 1/2=0,5/2=2,8/5=1 等等
解决方法也很简单:
写成 s=1/(1.0n(n+1));就行
乘以 1.0 就好比强制转换成浮点型
。
。
。
以下是测试用例:
#include<stdio.h>
double fun(int n)
{
double s=0;
for(;n;n--)
s+=1/(n*(n+1));
return s;
}
void main()
{
int n;
scanf("%d",&n);
printf("%f",fun(n));
}