搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于pow函数的一个问题
标题:
关于pow函数的一个问题
只看楼主
beyondlyf
等 级:
新手上路
帖 子: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
布拉莫斯
来 自:中国太平洋舰队
等 级:
新手上路
帖 子:169
专家分:0
注 册:2007-3-31
第
2
楼
得分: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
等 级:
新手上路
帖 子:16
专家分:0
注 册:2008-5-8
第
3
楼
得分:0
按你说的的确可以 ,但是我这么想: 我之前已经定义 sum为double型,那么 sum+=1/i*pow(-1,i+1);中所有变量都要转换为double型再运算,所以1/i可以得到double型,这么想错哪儿了
2008-05-08 18:52
布拉莫斯
来 自:中国太平洋舰队
等 级:
新手上路
帖 子:169
专家分:0
注 册:2007-3-31
第
4
楼
得分:0
”1/i“ 编译器是不认同你的想法的,它是不会帮你自动转换的,甚至报错都不会。。。
真理往往掌握在少数人手中,可现实却是少数服从多数!
2008-05-08 21:03
wslhnsng
等 级:
论坛游民
帖 子:48
专家分:37
注 册:2009-2-20
第
5
楼
得分:0
楼主是想算{(-1)^(n+1)}/n 这个式子吧 1/i 改成1.0/i就可以了 我运行了下 可以运行出来
2009-11-07 21:01
5
1/1页
1
参与讨论请移步原网站贴子:
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