标题:哥哥姐姐,这段函数调用程序为什么输出的结果是错误的?
只看楼主
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
结帖率:81.82%
已结贴  问题点数:10 回复次数:5 
哥哥姐姐,这段函数调用程序为什么输出的结果是错误的?
求y=1+1/(2*2)+1/(3*3)+1/(m*m) 的值。用下面的程序为什么结果总是1.000000

#include<stdio.h>
int fun(int n)
{
    float f;
   
        f=1/(n*n);
    return f ;
}
void main()
{
    int m;
    int i;
    float sum=0;
    printf("please input 'm'=\n");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        sum+=fun(i);
        
    }
    printf("'m' is %d , the final value is %f \n",m,sum);
}

搜索更多相关主题的帖子: include please return 哥哥 
2016-07-05 10:01
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:10 
两个编译告警改了就好了。

程序代码:
#include<stdio.h>
float fun(int n)
{
    float f;

    f = (float)1 / (n*n);
    return f;
}
void main()
{
    int m;
    int i;
    float sum = 0;
    printf("please input 'm'=\n");
    scanf("%d", &m);
    for (i = 1; i <= m; i++)
    {
        sum += fun(i);

    }
    printf("'m' is %d , the final value is %f \n", m, sum);
}
2016-07-05 10:07
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
大家别只看不赐教嘛!请我总感觉形参和主参之间有问题,知道问题在哪的大神麻烦教一下。小弟才学的函数,不太懂啊!
2016-07-05 10:08
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:0 
不是形参的问题,是数据类型转换的问题。
1. int型数据进行除法时,会只取商不取余,这个书本上应该会将。所以1/n*n结果就是0
2. fun函数返回值返回int型,那肯定不对。
2016-07-05 10:10
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
回复 2楼 grmmylbs
咦,还真可以了。“(float)1”是个什么东东啊?~~~好人一生平安
2016-07-05 10:10
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
回复 4楼 grmmylbs
奥,谢谢啦。这些数据类型转换我总是出错啊。。。
2016-07-05 10:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466637-1-1.html




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

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