12月30日 发表于 2013-11-9 11:00:51

底数为13 就出现错误 求解

//四、实训小结(问题、分析、感想、收获等)
//1.从n个不同的元素中,每次取出 k个不同的元素,不管其顺序合并成一组,称为组合。
//组合种数计箅公式如下:
// Cnk=n!/((n-k)!*k!)
//(1)定义函数fact(n)计算n!,类型double。
//(2)定义函数cal(k,n),计算组合种数Cnk,类型double。要求调用fact(n)计算n!。
//(3)定义函数main(),输入正整数n,输出n的所有组合数Cnk,要求调用函数cal(k,n)。
#include<stdio.h>
double fact(int n)
{
        int i,s=1;
        for(i=1;i<=n;i++)
                s=i*s;
        return s;
}

double cal(int k,int n)
{
        double c;
        c=fact(n)/(fact(k)*(fact(n-k)));
        return c;
}
main()
{
        int k,n;
        printf("输入底数n,指数k:");
        scanf("%d%d",&n,&k);
        printf("Cnk=%lf",cal(k,n));
}

友来友网 发表于 2013-11-9 11:53:12

因为13的阶乘已经超出了int型的最大值
页: [1]
查看完整版本: 底数为13 就出现错误 求解