| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 734 人关注过本帖
标题:有点小问题2??!
只看楼主 加入收藏
卧龙先生
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2004-7-18
收藏
 问题点数:0 回复次数:4 
有点小问题2??!

#include "stdio.h" #include "math.h"

main() {double tsum=0.0; int n=1,k,a,sum,j=-1,d=1; printf("Please input n:"); scanf("%d",&a); sum=3; for(k=2;n<a;n++) {k=k*2; sum=sum+k;} printf("\n%d",sum);

for(;d<=(int)(sqrt(sum));d++) {j=-j; tsum=tsum+j*(1/(d)); } printf("\n%f",tsum);

}

想问问为甚么tsum的值不变啊??按道理来说应该是1-(1/2)+(1/3)-(1/4)……(-1)^(k+1)*(1/k)啊

搜索更多相关主题的帖子: include double 
2004-07-26 00:33
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

吃了早饭有精神!

让我们来看看这一行:tsum=tsum+j*(1/(d));

当d=1时 tsum=tsum+j*(1/1) =0+1*1 =1

当d=2时 tsum=tsum-j*(1/2) =1-1*0 =1

当d=3时 tsum=tsum+j*(1/3) =1+1*0 =1

以次类推,tsum永远都会等于1。为什么会这样呢? 这是因为1/(d)的缘故。/ 的意思在这里是整除的意思1/2=0.5 整除后去掉小数部分,自然就是0啦,后面的也是一样的道理。所以tsum只有在d=1的时候由0变到1,到后面就再也没变过了。

[此贴子已经被作者于2004-07-26 08:22:00编辑过]


淘宝杜琨
2004-07-26 08:20
鑫11
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-7-24
收藏
得分:0 
把d变为浮点型的,不就得了
2004-07-26 08:33
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

楼主没给出题目,怎么能随便乱该类型呢?

顺便喊一下~~~我的头像还可以吧


淘宝杜琨
2004-07-26 08:48
卧龙先生
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2004-7-18
收藏
得分:0 

啊呀,原来我前面知识的基础还不够牢靠啊。谢谢指点。


我是一只小小小小菜鸟!!
2004-07-26 08:53
快速回复:有点小问题2??!
数据加载中...
 
   



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

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