C语言编程题 计算并输出 m!/[(m-n)!n!]

(1)编制一个函数pq(n),返回n!值。
(2)在main函数中,从键盘输入m与n,调用函数pq计算。
(3)在main函数中,输入m与n之前要有提示,并检查输入数据的合理性(m≥n≥O),对于不合理的输入,应输出出错信息,不再进行计算。
(4)采用程序改错题的的编码风格对源代码做注释

#include <stdio.h>
int fact(int n);
int c(int m,int n);
/*主函数*/
main()
{
int m,n;
printf("please enter m,n m>n");
scanf("%d%d",&m,&n);
if (m>=n && n>=0)
printf("%d",c(m,n));
else
printf("wrong input!");
}
/*求阶乘*/
int fact(int n)
{
if (n==0)
return 1;
if (n==1)
return 1;
return n*fact(n-1);
}
/*求组合数*/
int c(int m,int n)
{
return fact(m)/(fact(m-n)*fact(n));
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-03
#include<stdio.h>
int pq(int n)//计算n的阶乘
{
int temp=1;
while(n>=1)
{
temp=temp*n;
n--;
}
return temp;
}
void main()
{
int m,n;
printf("please input m:");
scanf("%d",&m);
printf("please input n:");
scanf("%d",&n);
if(m>=n&&n>=0)//判断输入格式,并进行计算
{
printf("m!/[(m-n)!n!]=%d\n",pq(m)/(pq(m-n)*pq(n)));
}
else//出错提示
{
printf("error input!\n");
}

}本回答被网友采纳

C语言编程题 计算并输出 m!\/[(m-n)!n!]?
int fun(int a,int b){int i,f=1;for(i=a;i<=b;i++)f*=i;return f;} int main(){ int m,n,f;scanf("%d%d",&m,&n);if(m<n)f=0;else {if(n>m-n)n=m-n;f=fun(m-n+1,m)\/fun(1,n);} printf("%d\\n",f);return 0;} ...

C语言编程题 计算并输出 m!\/[(m-n)!n!]
int c(int m,int n){ return fact(m)\/(fact(m-n)*fact(n));}

c语言编程 2.计算并输出 m!\/(m-n)!n!
long func(int m){ int i,sum=1;for(i=1;i<=m;i++)sum=sum*i;return sum;} main(){ int m,n;float x;printf("input m,n(m>n)");scanf("%d %d",&m,&n);if(m<0 || n<0 || m<n ){ printf("data error! ");return;} else{ x=(float)func(m)\/(func(n)*fun...

用C语言输出m!\/(m-n)!n! 要求是C语言,不是C++
a=b=c=1;int result;printf("请输入两个正整数m和n,要求m大于n :\\n");scanf("%d%d",&m,&n);while(m<n){ printf("输入的数据不合理,请重新输入:\\n");scanf("%d%d",&m,&n);} e=m-n; \/\/用e来存储m和n的差值 while(m>1){ a=a*m; \/\/用a来存m的阶乘 m=m-1...

m!\/{(m-n)!n!}c语言怎么编程
return result ;} int main(){ unsigned int m ;unsigned int n ;printf("请输入M:");scanf("%d",&m);printf("请输入N(M>N):");scanf("%d",&n);printf("%ld!\/(%ld!*%ld!) = %ld\\n",m,m-n,n,factor(m)\/(factor(m-n)*factor(n)));getchar();getchar();return 0 ;...

c语言作业,编写程序:计算m!n!\/(m-n)!,其中m、n为正整数且m>n
a);void main(){ long m,n;printf("please input the 'm'\\n");scanf("%ld",&m);printf("please input the 'n'\\n");scanf("%ld",&n);printf("result=%ld\\n",fun(m)*fun(n)\/fun(m-n));} long fun(long a){ long result=1;while(a)result*=a--;return result;} ...

C语言编程:用函数求Cmn=m!\/(n!(m-n)!)
include <iostream> using namespace std;int jiecheng(int n){int sum=1;if(n<=0)return 0;for(int i=1;i<=n;i++){ sum*=i;} return sum;} int main(){int n,m,Cmn;cin>>n>>m;Cmn=jiecheng(m)\/(jiecheng(n)*jiecheng(m-n));cout<<Cmn;return 0;} 注意输入时n 和m...

C语言程序设计:c=m!\/(n!*(m-n)!)
1、此题先构造一个求阶乘的函数,然后3次调用该函数,即可。2、程序的源代码如下:include int fact(int n);int main(){ int m,n,c;printf("请输入m的值:\\n");scanf("%d",&m);printf("请输入n的值(n<=m):\\n");scanf("%d",&n);c=fact(m)\/(fact(n)*fact(m-n));printf(...

C语言编程 m和n为两个整数且m大于n求p=m!\/(n!(m-n)!) 在下方的空白处填...
float fun(int m, int n){ float p = 0;long s1=1,s2=1,s3=1;\/\/使用long型存储阶乘数,防止数据过大,内存溢出 int i,j;if(m > n)\/\/判断m>n,提高程序健壮性 { for(i = 1; i <= m; i++)\/\/计算m的阶乘 { s1 *= i;} for(i = 1; i <= n; i++)\/\/计算n的...

C语言程序设计:p=m!\/(n!*(m-n)!) m>n m=12,n=8
include<stdio.h>float fun(int m, int n){int i;double p=1.0;for(i=1;i<=m;i++) p=p*i; for(i=1;i<=n;i++)___p=p\/i;___ for(i=1;i<=m-n;i++) p=p\/i; __return p;__}main(){ printf("%.2f\\n",fun(12,8));} ...

相似回答