- #include "stdafx.h"
- #include <iostream>
- using std::cout;
- using std::cin;
- using std::endl;
- void factorial(int x){
- int re[1000],len=1,i,carry;
- re[0]=1; //初始re[0]赋值1
- for(int mul=2;mul<=x;mul++){ //阶乘从2开始循环
- for(i=0;i<len;i++) //初步计算,临时结果的每一位都乘以i
- re[i]*=mul;
- carry=0; //进位值
- for(i=0;i<len;i++){ //循环进位
- re[i]+=carry;
- carry=re[i]/10;
- re[i]%=10;
- }
- while(carry>0){ //最高位进位
- re[len++]=carry%10;
- carry/=10;
- }
- }
- for(i=len-1;i>=0;i--)
- cout<<re[i];
- cout<<endl;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- factorial(100);
- return 0;
- }
常见C语言面试题之八:数组实现大数阶乘
最新推荐文章于 2021-05-22 06:22:28 发布