| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:麻烦大家帮忙查一下错!
只看楼主 加入收藏
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
麻烦大家帮忙查一下错!
#include "stdio.h"
#include "math.h"
main()
{
    int i=1,j=1;
    float sum=0;
    while(fabs(j/i)>1e-6)        
    {
        sum+=1.0*j/i;        /*  j/i的结果是整型,用1.0*j/i  将数据转换成浮点型   */
        i++;
        j=-j;
    }
    printf("%f\n",sum);
    return  0;
}

运行的结果是  1.000000  
找不到错在哪里!
请大家帮忙看一下,谢谢!
搜索更多相关主题的帖子: 数据 include return 
2012-04-01 20:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
fabs(j/i)
你觉得这里计算机是先计算j/i再计算fabs()还是咋地?写代码之前,先过自己的判断关。如果实在不知道怎么分析,就笨点用下面的代码看:
程序代码:
float k;
k=j/i;        // k是多少?代到下面,表达式的值是多少?
fabs(k);


[ 本帖最后由 TonyDeng 于 2012-4-1 20:48 编辑 ]

授人以渔,不授人以鱼。
2012-04-01 20:46
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
收藏
得分:0 
#include "stdio.h"
#include "math.h"
main()
{
    int i=1,j=1;
    float sum=0,k=1.0;
    while(fabs(k)>1e-6)
    {
        k=1.0*j/i;
        sum+=k;
        i++;
        j=-j;
    }
    printf("%f\n",sum);
    return  0;
}
我把程序改成这样,结果还是 1.000000  ,还是不可以!

[ 本帖最后由 hecate3835 于 2012-4-1 20:59 编辑 ]
2012-04-01 20:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:15 
开动脑筋想办法“看到”整个程序的每一个动作,有这样的意识,学会这种办法,就能学会编程。不直接告诉你,自己摸出来的经验,才能记得牢。

授人以渔,不授人以鱼。
2012-04-01 21:03
ygwlovech
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2011-12-24
收藏
得分:0 
程序代码:
# include <stdio.h>
# include <math.h>
int main()
{
    int n = 1;
    float pi = 0, t = 1, s = 1.0;
  
    while (fabs(t)>1e-6)
    {
        pi += t;
        s *= -1;
        n += 2;
        t = s / n;
    }
    pi *= 4;
    printf("%f",pi);
    system("pause");
    return 0;
}
2012-04-01 21:09
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
收藏
得分:0 
把 i j 定义成浮点型就可以输出正确的结果 , 但  k=1.0*j/i  让我很纠结 ,能用整型的我就不用浮点型。
2012-04-01 21:09
天涯漫
Rank: 2
等 级:论坛游民
帖 子:31
专家分:57
注 册:2012-3-8
收藏
得分:0 
因为你的循环只运行了一次 第二次循环时,绝对值已经为0了,不满足条件了。2楼给的是正确的,我运行过了
2012-04-01 21:09
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
收藏
得分:0 
回复 6楼 hecate3835
不对
循环可以进行

[ 本帖最后由 hecate3835 于 2012-4-1 21:19 编辑 ]
2012-04-01 21:18
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
收藏
得分:0 
回复 5楼 ygwlovech
你好,你的代码我运行了一下 ,当fabs(k)>1e-6 时什么都不显示,而改成 fabs(k)>1e-3  就出现结果啦 。郁闷!
2012-04-01 21:27
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
收藏
得分:0 
#include "stdio.h"
#include "math.h"
main()
{
    float  i,j,k,sum;
    i=1;j=1;k=1;sum=0;
    while(fabs(k)>1e-6)
    {
        sum+=j/i;
        i++;
        j=-j;
        k=j/i;
    }
    printf("%f\n",sum);
    return  0;
}
这个应该可以,结果不知道对错  0.693138



一下是我原来的意思:
#include "stdio.h"
#include "math.h"
main()
{
    int i=1,j=1;
    float sum=0,k=1;
    while(fabs(k)>1e-4)
    {
        sum+=1.0*j/i;
        i++;
        j=-j;
        k=1.0*j/i;
    }
    printf("%f\n",sum);
    return  0;
}
结果是 0.693139
#include "stdio.h"
#include "math.h"
main()
{
    int i=1,j=1;
    float sum=0,k=1;
    while(fabs(k)>1e-5)
    {
        sum+=1.0*j/i;
        i++;
        j=-j;
        k=1.0*j/i;
    }
    printf("%f\n",sum);
    return  0;
}
没有结果,出错啦! 这是为什么呢????

[ 本帖最后由 hecate3835 于 2012-4-1 22:37 编辑 ]
2012-04-01 21:55
快速回复:麻烦大家帮忙查一下错!
数据加载中...
 
   



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

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