2.4 组合数 计算从m个元素中取n个元素的组合数C(m,n),其中m,n满足0<=n<=m。 计算公式如下:
按式(2)设计程序更为简结。
根据(1)式的程序设计 #include<stdio.h> void g(double *p,int k); double p=0,c; void main() { int m,n,k; printf("输入 m,n = "); scanf("%d,%d",&m,&n); if(m<n) printf("m比n小,错误!"); if(n==0||m==n) c=1; else { k=m;g(&p,k);c=p; k=n;g(&p,k);c=c/p; k=m-n;g(&p,k);c=c/p; } printf("c( %d, %d )= %.f\n",m,n,c); } void g(double *p,int k) { int i; *p=1; for(i=1;i<=k;){*p=*p*i;i++;} } 运行结果如下: 输入 m,n= 20,5 C(20,5) = 15504
--------------------------
根据式(2)设计的程序 #include<stdio.h> void main() { int c=0,m,n,k; printf("输入m,n:= "); scanf("%d,%d",&m,&n); if(m<n)printf("输入错误,m不能小于n.\n"); printf("c( %d, %d) = ",m,n); if(n==0||m==n) printf("end"); if(n>m/2) n=m-n; c=1; for(k=1;k<=n;k++) c=c*(m-k+1)/k; printf("%d",c); } 运行结果如下: 输入 m,n = 50,2 C(50,2) = 1225
视频教程列表
文章教程搜索
C语言程序设计推荐教程
C语言程序设计热门教程
|