| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5304 人关注过本帖
标题:如何编写函数求s=sqrt(ln1+ln2+…+ln(m))
只看楼主 加入收藏
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
结帖率:69.23%
收藏
已结贴  问题点数:7 回复次数:11 
如何编写函数求s=sqrt(ln1+ln2+…+ln(m))
如何编写函数求s=sqrt(ln1+ln2+…+ln(m))
搜索更多相关主题的帖子: 如何 
2011-09-11 18:11
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:5 
我这人就喜欢百度这点,资料超多 #include<stdio.h>
#include<math.h>
main()
{
double sum=0,ave;
int m;
for (m=1;m<=100;m++)
sum+=log( m);
ave=sqrt(sum);
printf("ave=%lf",ave);
}sum没初始化 哈哈…资料有点错误,我改了下,还是楼下速度块啊……哈哈

[ 本帖最后由 A13433758072 于 2011-9-11 18:30 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-11 18:25
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:2 
double sum=0;
2011-09-11 18:26
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 2楼 A13433758072
谢谢
2011-09-12 19:05
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
有一个公式可能大家印象不深了哈。
ln(a) + ln(b) = ln(ab)

所以这个里面的那几项可以反复用一这个公式,然后化简成:
sqrt(ln(m!))
这个样子。
然后算一下 m!,log 和 sqrt 算一次就够了。
2011-09-12 22:41
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 5楼 pangding
#include<stdio.h>
#include<math.h>
main()
{
double sum,ave;
int m,k=1;
for (m=1;m<=100;m++)
k*=m;
sum=log( k);
ave=sqrt(sum);
printf("ave=%lf",ave);
}如果这样编写程序的话为什么结果出错
2011-09-13 21:59
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
嗯。是得出错,别这么算了,还是老方法吧。
2011-09-13 22:14
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 7楼 pangding
到底是错在哪呢,看着你的方法原理挺对的
2011-09-13 22:15
赵灿星
Rank: 2
等 级:论坛游民
帖 子:11
专家分:14
注 册:2011-9-13
收藏
得分:0 
回复 6楼 多余的流星
#include <stdio.h>
#include <math.h>

void main()
{
        double sum = 0;
        double ave = 0;
        double k = 1;
        int m;
        for(m=1; m<=100; m++)
        {
                k *= m;
        }

        sum = log10(k);
        ave = sqrt(sum);
        printf("ave = %lf\n", ave);
}
这样是对的。
你那个k的数据格式太小了,然后运行时造成溢出,你可以把100改成小一点的试试。
2011-09-13 22:47
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 9楼 赵灿星
那如果就是要计算到100的呢,可以怎么修改呢?可不可以利用这个呢
2011-09-14 13:19
快速回复:如何编写函数求s=sqrt(ln1+ln2+…+ln(m))
数据加载中...
 
   



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

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