double fact(long num)
成都创新互联凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都做网站、成都网站制作服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。
{
for (long i = 1; num 0; num--)
{
i *= num;
}
}
int main()
{
long m;
long n;
long C;
scanf("%ld %ld", m, n);
C = fact(n) / ((fact(m)) * fact(n-m));
printf("%ld",C);
return 0;
}
C语言中,每个函数都有返回值类型。可以是void,int,double,等,也可以是struct类型。
在返回值是void类型的函数中,return一般在最后一行,后面不加任何值,而且此时return可以省略。如:
void printResult(int n)
{
printf("%d\n",n);
return;
}
并不是return必须放在最后一行。只要达到这个函数的目的就能够返回:
如寻找学号是200的学生,如果找到就输出学号,找不到就返回的一个函数:
void findStudentByNumber(int n,int sn[],int m)
{//m是学生总数,n是查找的学号,sn是个数组,存放多个学生学号;
int i;
for(i=0;i!=m;i++)
if(sn[i]==n)
{
printf("%d",n);
return;//已经找到,不需要再找;
}
return;//找遍了,没找到,此处返回,此处可省略,因为是void返回类型;
}
非void返回类型的函数返回语句不能省略,并且要返回一个与返回类型相同的值。
如:
int add(int a,int b)
{
return a+b;
}
自定义函数的方法:VC中,定义函数分为两步:
I.声明:在main函数开头定义变量的位置,声明函数:定义上述函数声明是:
int add(int a,int b);
注意分号,声明前部不能有执行语句;
II.把下面的函数定义部分放在main函数外部
int add(int a,int b)
{
return a+b;
}
推荐放在main的后花括号后面,注意此处的int add(int a,int b)后面并没有分号。
VC里面,返回类型是int的函数可以省略声明部分
有两个问题,一个是fact()函数里的p应该定义成double类型,第二个是printf()不应该用%d输出double类型的值,应该用%.0f或者%.0lf
顺便说一句,这个问题只要定义fact()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了。
如果是指 从m个不同元素中取出n(n≤m)个元素的所有组合的个数 的话
#include"stdio.h"
int fac(int n) /*阶乘函数*/
{
int s,i;
s=1;
for(i=1;i=n;i++)
{
s*=i;
}
return(s);
}
main()
{
int n,m,c;
scanf("%d %d",m,n);
c=fac(m)/(fac(n)*fac(m-n));
printf("%d\n",c);
}