标题:关于pow函数的一个问题
只看楼主
beyondlyf
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-5-8
 问题点数:0 回复次数:4 
关于pow函数的一个问题
#include "math.h"
main()
{int i,n;
double sum;                     
scanf("%d",&n);
for(i=1,sum=0;i<=n;i++)
sum+=1/i*pow(-1,i+1);
printf("\nsum is %.2f\n",sum);
system("pause");}
这个程序无论我输入什么结果都是1.00,哪里出错了那?
搜索更多相关主题的帖子: pow 函数 
2008-05-08 18:30
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
得分:0 
错在 sum+=1/i*pow(-1,i+1); 这一句, ”1/i“ 被编译器视为整型相除,结果为整数, 当i=1时,1/i 结果为 1 , 当后面的i都大于1时, 1/i 结果就变成 0 了, 所以实际上你只能得 i =1 时的结果 ,后面的都因为
pow()结果乘以前面的0而变成0了, 所以,原因不是 pow的问题,。。

你把 ‘1/i’ 改成 “1.0/i” 试试!

真理往往掌握在少数人手中,可现实却是少数服从多数!
2008-05-08 18:36
beyondlyf
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-5-8
得分:0 
按你说的的确可以 ,但是我这么想: 我之前已经定义 sum为double型,那么 sum+=1/i*pow(-1,i+1);中所有变量都要转换为double型再运算,所以1/i可以得到double型,这么想错哪儿了
2008-05-08 18:52
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
得分:0 
”1/i“ 编译器是不认同你的想法的,它是不会帮你自动转换的,甚至报错都不会。。。

真理往往掌握在少数人手中,可现实却是少数服从多数!
2008-05-08 21:03
wslhnsng
Rank: 2
等 级:论坛游民
帖 子:48
专家分:37
注 册:2009-2-20
得分:0 
楼主是想算{(-1)^(n+1)}/n 这个式子吧 1/i 改成1.0/i就可以了 我运行了下 可以运行出来
2009-11-07 21:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-213203-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.663584 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved