可怕的阶乘

来源:互联网 发布:linux火狐57乱码 编辑:程序博客网 时间:2024/04/28 15:22
void CalcNN(int n, char *pOut)
{
if(n < 0 || n > 100 || pOut == NULL)
return;


if(n == 0 || n == 1)
{
pOut[0] = '1';
pOut[1] = '\0';
return;
}


int i = 0;
int j = 0;
int k = 0;
int carry = 0;  //记录进位
int length = 1; //记录数组长度
int temp = 0;  //临时变量
int a[1000] = {0}; //临时整型数组
a[0] = 1;


for(i = 2; i <= n; ++i)  //控制阶乘数
{
carry = 0;  //每次新循环进位清零
for(j = 0; j < length; ++j)
{
temp = a[j] * i + carry; //存储临时结果
a[j] = temp % 10;    //保留个位数
carry = temp / 10;   //记录进位
}


while(carry)     //最后一位进位数可能大于10
{

a[length] = carry % 10;    
length++; 
carry /= 10;
}
}


for(i = length - 1; i >= 0; i--) //存储字符数组
{
pOut[k] = a[i] +'0';
k++;
}


pOut[k] = '\0';


return;
}
0 0
原创粉丝点击