谁能帮找下问题? C语言的,输出的都是0.0000
发布网友
发布时间:2024-10-03 23:43
我来回答
共5个回答
热心网友
时间:2024-10-07 04:23
scanf("%d",&n); //n 是double 应该改为scanf("%lf",&n);
for(i=1,n=0;n>=e;i++) ;// 这里 pow(10.0,-n); 例如传入的是1 e就是0.1 这个条件不成立 所以返回0.00..
这个条件你应该是写错了
热心网友
时间:2024-10-07 04:26
把i也改成double型,不同类型的运算使得结果类型不是double的。
热心网友
时间:2024-10-07 04:24
首先
for(i=1;i<=n;i++)
因为pow(10.0,-n);
-n表示为负数,如果i=1并自加i<=n是不可能的,f*=i;只运行一次就是0
热心网友
时间:2024-10-07 04:25
错在主函数中:
void main()
{
double n,e,y=0.0;
while(1)
{
scanf("%d",&n); /*n是double型的,不能用%d输入,应该改成%f*/
e=pow(10.0,-n);
y+=cal(e);
printf("%f\n\n",y);
}
}
热心网友
时间:2024-10-07 04:23
printf("%f\n\n",y);
改成
printf("%lf\n\n",y);
就OK了