| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1036 人关注过本帖
标题:想处理一个数学问题,部知道那步错了?
只看楼主 加入收藏
fenkyer
Rank: 2
来 自:广东省广州市
等 级:论坛游民
帖 子:39
专家分:13
注 册:2007-7-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:22 
想处理一个数学问题,部知道那步错了?
main()
{
 int sigh=1;
 float deno=2.0,sum=1.0,term;
 while(deno<=100)
 { sigh= -sigh;
   term= sigh/ deno;
   sum=sum+term;
   sigh=sigh+1;
   deno=deno+1;
 }
printf("%f",sum);
getch();
}
是要计算1-(1/2)+(2/3)-(3/4).....-(99/100)的值
搜索更多相关主题的帖子: 数学 
2012-03-19 14:29
fenkyer
Rank: 2
来 自:广东省广州市
等 级:论坛游民
帖 子:39
专家分:13
注 册:2007-7-8
收藏
得分:0 
输出的是负数,可按计算应该是正数,而且应该是越来越大的才对啊?不知道是哪一步错了。

年年月月日日,生生学学实实!
2012-03-19 14:43
fenkyer
Rank: 2
来 自:广东省广州市
等 级:论坛游民
帖 子:39
专家分:13
注 册:2007-7-8
收藏
得分:0 
怎么有人看却没人回呢?

年年月月日日,生生学学实实!
2012-03-19 14:50
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:2 
{ sigh= -sigh;

 

   sigh=sigh+1;

 }这一步错了。
当deno=2.0时,循环为

{ sigh= -1;

   term= -1/ 2.0;

   sum=1.0+(-1/ 2.0);

   sigh=-1+1=0;

   deno=2.0+1;

}
明白了吧。
2012-03-19 14:57
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:2 
改正后的函数体

{
int sigh=1,s=1;

float deno=2.0,sum=1.0,term;

while(deno<=100)
{ s= -s;

term= s*sigh/ deno;
sigh=sigh+1;
 
sum=sum+term;


deno=deno+1;
}

printf("%f",sum);

getch();
}
2012-03-19 15:03
w339735126
Rank: 2
等 级:论坛游民
帖 子:18
专家分:24
注 册:2012-3-15
收藏
得分:1 
问题出现在sign上。
while循环;你看2个就可以知道错哪里了。
第一次循环deno=2,deno<=100,进入循环。接着,sign=-sign,此时sign=-1。然后  sign=sign+1,也就是此时sign=0,sum=sum+term;(sum=1-(1/2))。
第二次循环直接就是sign=0了吧~!接着sign=sign+1;
第三次循环和第一次一样;又是sign=-1;



所以它就是个负数了。
2012-03-19 15:04
zjxssz
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2012-1-24
收藏
得分:1 
sigh错误
2012-03-19 15:04
dc__sky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:117
注 册:2012-3-13
收藏
得分:2 
main()
{
int sigh=1;
int i = 1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{ sigh= -sigh;
   term= sigh*i/ deno;
   sum=sum+term;
   i=i+1; //第一次sigh=sigh+1  = 0了
   deno=deno+1;
}
printf("%f",sum);
getch();
}
2012-03-19 15:05
wsws23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
收藏
得分:1 
#include <stdio.h>
main()
{
int sigh=1,i=1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{
  term= (float)(sigh/ deno);
sigh=sigh*(-1)^i;
   sum=sum+term;
   sigh=sigh+1;
   deno=deno+1;
   i++;
}
printf("%f",sum);

}
2012-03-19 15:06
dc__sky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:117
注 册:2012-3-13
收藏
得分:1 
竟然慢了一步呀!呵呵~~~
2012-03-19 15:10
快速回复:想处理一个数学问题,部知道那步错了?
数据加载中...
 
   



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

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