| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3773 人关注过本帖
标题:数学排列组合计算
只看楼主 加入收藏
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:16 
稍微改动了你的代码,你试试。
有两处问题,你计算时是从最后一行开始计算的;c没有初始化。
程序代码:
#include <math.h>
#include"string.h"
#include"stdlib.h"
#include <stdio.h>
FILE *out;
/*
0.9*0.8*0.7*0.6*0.5*0.4*0.3*0.2*0.1*1^0
0.9*0.8*0.7*0.6*0.5*0.4*0.3*0.2*0.9^1
0.9*0.8*0.7*0.6*0.5*0.4*0.3*0.8^2
0.9*0.8*0.7*0.6*0.5*0.4*0.7^3
0.9*0.8*0.7*0.6*0.5*0.6^4
0.9*0.8*0.7*0.6*0.5^5
0.9*0.8*0.7*0.4^6
0.9*0.8*0.3^7
0.9*0.2^8
0.1^9
*/

int main(void)
{
    long double m, n, c = 1, k = 10, h = k - 10, sum = 0, b, t, u, v, s = 10;  //k为实际的孔数   
    out = fopen("E:\\收获1.txt", "wt");
    for (m = 10; m >= 0; m--)   //m为微滴进入的孔数
    {
        u = m / k;
        v = k - m;
        b = pow(u, v);
        c = 1;
        for (n = k-1; n >= k + 1 - m; n--)
            c *= (n / s);
        t = b*c;
        sum = sum + t;
        fprintf(out, "%.12f\n", t);   //%.6f意思是保留6位小数
    }
    fprintf(out, "%.20f\n", sum);
}
2016-04-21 10:40
nupt_陈小二
Rank: 2
等 级:论坛游民
帖 子:13
专家分:36
注 册:2016-4-17
收藏
得分:2 
oo,要打印那一串相乘的数字的手动输入啊,不过打印结果我是这样做的
程序代码:
int main()
{
    int i,j,n=10;
    double prod=1.0;
    for(j=0;j<=9;j++)
    {
        for(i=9;i>j;i--)
            prod *= (double)i/10;
        prod *= pow(1.0 - (double)j/10,j);
        printf("%.35lf\n",prod);
    }

       
    return 0;
     
}
2016-04-21 11:01
快速回复:数学排列组合计算
数据加载中...
 
   



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

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