| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 461 人关注过本帖
标题:为什么我这个代码运算结果是0?
只看楼主 加入收藏
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:5 
为什么我这个代码运算结果是0?
要求计算 1.0+1.0/2.0+1.0/3.0+……1.0/n
代码如下
程序代码:
#include <stdio.h>

int main (void)
{
    double n = 1.0;
    double m;
    double result;
   

    printf ("enter m:");
    scanf ("%f", &m);
   

    for (n; n <= m; n++){
        result = result + 1.0 / n;   

    }
    printf ("result:%f\n", result);
   

    return 0;
}

最终计算机结果为什么是0呢?
搜索更多相关主题的帖子: result 
2015-05-07 11:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
你总得告诉别人你输入了什么东西后输出0吧?!

另外,scanf ("%f", &m); 既然是%f,那么后面的类型应当是 float*,但你给的是 double*
result = result + 1.0 / n; 中 result 的初值是多少?
2015-05-07 11:45
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
n++这种格式好像只能加整数1

一片落叶掉进了回忆的流年。
2015-05-07 11:47
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
回复 2楼 rjsp
对不起,我没有描述清楚。
不管输入什么都是0,比如6.0,7.0或者10.0什么的。
result没初始值,只是存储计算结果的。

我把double改成float就可以了,非常感谢啊,我总是在这种细节上出问题。
2015-05-07 11:51
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
回复 3楼 诸葛欧阳
这个细节不太清楚,1.0加整数1会强制转换为int型吗?不过从我这里看没遇到强制转换类型的情况。
2015-05-07 11:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
没初始值是不可以的

DO IT YOURSELF !
2015-05-07 11:56
快速回复:为什么我这个代码运算结果是0?
数据加载中...
 
   



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

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