用C语言输出m!⼀(m-n)!n! 要求是C语言,不是C++

2024年11月20日 16:30
有2个网友回答
网友(1):

# include
void main(){
int m,n,a,b,c,e;
a=b=c=1;
int result;
printf("请输入两个正整数m和n,要求m大于n :\n");
scanf("%d%d",&m,&n);
while(m printf("输入的数据不合理,请重新输入:\n");
scanf("%d%d",&m,&n);

}

e=m-n; //用型返e来存储m和n的差值
while(m>1){
a=a*m; //用a来存m的阶乘
m=m-1;
}
while(n>1) {
b=b*n; //用b来存n的阶乘
n=n-1;
}

while(e>1) {//用c来存m-n的阶乘
c=c*e;
e=e-1;
}
result=(a/b/c) ; //结果迹谨等于a除以b,再除以c
printf("%d %d %d ",a,b,c);

printf("结果等于:姿租基%d\n",result);
}

网友(2):

#include
using namespace std;
#define N 88
int Array[N]={0};
int pq(int n)//递归计算阶乘,并优化
{
if(Array[n]!=0)
return Array[n];
if(n==1)
{
Array[1]=1;
return 1;
}
else
{
Array[n]=n*pq(n-1);
return Array[n];
}
}
int main()
{
int m=1,n=1;
while(m&&n)
{
cout<<码闭哪"输入m和n,用空格分开:"< cin>>m>>n;
if(!m||!n||m-n<态链0)
{
cout<<"输入错误!m要大迟码于n且m,n必须大于0."< m=1,n=1;
}
else
{
int a=pq(m),b=pq(n),c=pq(m-n);
cout< }
}
return 0;
}