C语言求(m-n)!

一楼的程序相当不错,很简洁,不过我习惯用数组来代替长整型,这样m-n的最大值可以为3248而不是12(我试过),这都达到一般科学计算器的标准了。
#include <stdio.h>
#define M 10000
void main()
{
int m,n,i,j,k=M-1,a[M]={1};
loop:printf("请输入第一个数m:\nm=");
scanf("%d",&m);
printf("请输入第二个数n:\nn=");
scanf("%d",&n);
if(m<n){printf("输入错误,请重新输入:\n");goto loop;}
for(i=1;i<=m-n;i++)
{
for(j=0;j<M;j++)
{
a[j]*=i;
}
for(j=0;j<=M-2;j++)
{
a[j+1]=a[j]/10+a[j+1];
a[j]%=10;
}
}
while(a[k]==0)k--;
printf("\n(m-n)!=%d!=",m-n);
for(i=0;i<=k;i++)
printf("%d",a[k-i]);
printf("\n\n");
if(a[i-8]>4)
a[i-7]+=1;
if(i>=7)
printf("科学计数法为:%d.%d%d%d%d%d%d E %d\n",a[i-1],a[i-2],a[i-3],a[i-4],a[i-5],a[i-6],a[i-7],k);
}

注意:m>n
#include <stdio.h>
main ()
{
unsigned long sum=1,sum1=1,sum2=1,m,n,t,y;
char i,j;

printf ("输入第一个数m:");
scanf("%d",&m);
for (i=1;i<=m;i++)
sum*=i;
printf ("sum=%ld\n",sum);

printf ("输入第二个数n:");
scanf("%d",&n);
for (i=1;i<=n;i++)
sum1*=i;
printf ("sum1=%ld\n",sum1);

for (i=1;i<=(m-n);i++)
sum2*=i;
printf ("sum2=%ld\n",sum2);

t=(sum/sum1)*sum2;
printf ("t=%ld\n",t);
return 0;
}

#include <iostream.h>

int jc(int m)
{

if((m)==1)
return 1;
else
return m*jc(m-1);

}

int main()
{
int m,n;
cout<<"请输入两个自然数m,n(m>n)"<<endl;
cin>>m>>n;

cout<<"("<<m-n<<")!="<<jc(m-n)<<endl;
return 0;

}

#include<stdio.h>
long jc(long n)
{
if (n<=1) return 1;
else return n*jc(n-1);
}
int main()
{
long m,n;
scanf("%ld%ld",&m,&n);
printf("%ld",jc(m-n));
return 0;
}

C语言:求m!+n!之和



#include

int main(void)
{
int i;
int m,n;
long m_=1,n_=1;
printf("Enter m: ");
scanf("%d", &m);
printf("Enter n: ");
scanf("%d", &n);
for (i=1; i<=m; i++)
m_ *= i;
for (i=1; i<=n; i++)
n_ *= i;
printf("%d!+%d!=%ld
", m, n, m_+n_);
}

不是,是先赋值给m,再n自增。


m += n+1 等价于 m = m+(n+1);


C语言编程 m和n为两个整数且m大于n求p=m!/(n!(m-n)!) 在下方的空白处填...
答:int i,j;if(m > n)//判断m>n,提高程序健壮性 { for(i = 1; i <= m; i++)//计算m的阶乘 { s1 *= i;} for(i = 1; i <= n; i++)//计算n的阶乘 { s2 *= i;} for(i = 1; i <= (m-n); i++)//计算(m-n)的阶乘 { s3 *= i;} p = 1.0 * s1 ...

c语言 c++ m!/《n!(m-n)!》怎么编程
答:定义一个求阶乘的函数,然后将改函数带入式子中需要求阶乘的地方即可。求阶乘是一个典型的利用递归法的案例。int jiecheng(int N){ int res = N; if(N > 1) res *= jiecheng(N - 1); return res;}

c语言 m!/n!(m-n)!
答:循环不应该嵌套,写成3个单独的for循环就好了。

用C语言输出m!/(m-n)!n! 要求是C语言,不是C++
答:include <stdio.h> 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<n){ printf("输入的数据不合理,请重新输入:\n");scanf("%d%d",&m,&n);} e=m-n; //用e来存储m和n的差值...

c语言请问在c语言中m的阶乘/m-n的阶乘怎么输入算法 尽量用while循环_百...
答:include <stdio.h>int main(){int m,n,y=1,i=1,m1;scanf("%d%d",&m,&n);while(i++<=n) y*=m--;printf("%d\n",y);return 0;}

用c语言中调用函数怎么编写m!/n!(m-n)!求大神指教,急用谢谢!
答:q=(stud )malloc(sizeof(stud));你只是用了这两个指针,为它们分配空间一是没必要,二是内存会泄露 2.看你的代码应该是有头结点的链表,搜索的时候p=head;p初始化为了head,指向了头结点,搜索的时候应该从p->next开始,而你用的while((p!=null)&&(strcmp(p->name,n)!=0)),应该用p->...

m!/{(m-n)!n!}c语言怎么编程
答:{ long result =1;for(int i =1 ; i <= n ; i ++ )result = result*i;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-...

p=m!/(n!*(m-n)!)当m>n时,怎么用c语言编程,谢谢
答: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的值:\n");printf("%d\n",c);return 0;} int fact(int n)//用递归求n的...

C语言:写函数求m-n之间的所有偶数的个数
答:include <stdio.h>#include <stdlib.h>int main(){ int m=0, n=0, i, sum = 0; printf("请输入m n\n"); scanf( "%d %d", &m, &n ); if ( m < 0 || m >= n ) { printf("输入参数有误\n"); return 0; } for ( i = m; i <= n...

...再通过调用该函数求出M!*N!/(M-N)!的值(其中M>N).
答:printf("%d!=%d\n",n,b); c=my(m-n); printf("%d!-%d!=%d\n",m,n,c); printf("%d!*%d!/%d!=%d",m,n,c,a*b/c);} int my(int x) {int k=1,y; for(y=1;y<=x;y++) k*=y; return(k); } 追问 这个函数中如果出现了mn?中间似乎还有一处错误:printf("%d!-%d!=%d\n"...

字意查询