三九宝宝网宝宝教育教学论文

用C语言求个能得到50阶乘的程序注意long搜狗

01月06日 编辑 39baobao.com

#include

int main()

{

long int n;

long int a[250000]; //确保保存最终运算结果的数组足够大

long int digit = 1; //结果的位数

long int temp; //阶乘的任一元素与临时结果的某位的乘积结果

long int i,j,carry; //i:1~n的某一阶乘元素;carry:进位

printf("please in put n:\n");

scanf("%d",&n);

a[0] = 1; //将结果先初始化为1

for(i = 2; i <= n; i++)

{ //开始阶乘,阶乘元素从2开始依次"登场"

//按最基本的乘法运算思想来考虑,将阶乘元素i与临时结果的每位a[j-1]相乘

for( j = 0, carry = 0; j < digit; j++)

{

temp = i * a[j] + carry; //相应阶乘中的一项i与当前所得临时结果的从低到高各位a[j-1]依次相乘(加上进位)

a[j] = temp % 10; //更新临时结果的位上信息

carry = temp / 10; //更新相乘后的进位

}

while(carry) //如果有进位

{

++digit; //新加一位,添加信息。位数增1

a[digit-1] = carry % 10; //将进位放在新加的结果位上

carry = carry/10; //看还能不能进位

}

}

printf("n ! = "); //输出结果

for(j = digit; j >=1;j--)

{

printf("%d",a[j-1]);

}

printf("\n%d",digit);

return 0;

}

推荐阅读
图文推荐