小问题。。。关于int的位置。
以下是一段代码:#include<stdio.h>
long cmn(int m,int n);
int main(void)
{
printf("c(8,3)=%d\n",cmn(8,3));
return 0;
}
long cmn(int m,int n)
{
int a=1,b;
int k=1;
int r=1;
b=m-n;
while(b>0)
{
a=a*b;
b--;
}
while(m>0)
{
k=k*m;
m--;
}
while(n>0)
{
r=r*n;
n--;
}
return k/(a*r);
}
我这样写检验是正确的,但如果这样写:
#include<stdio.h>
long cmn(int m,int n);
int main(void)
{
printf("c(8,3)=%d\n",cmn(8,3));
return 0;
}
long cmn(int m,int n)
{
int a=1,b;
b=m-n;
while(b>0)
{
a=a*b;
b--;
}
int k=1;
while(m>0)
{
k=k*m;
m--;
}
int r=1;
while(n>0)
{
r=r*n;
n--;
}
return k/(a*r);
}
就是错误的。。。为什么呢?