#include<stdio.h>
int max = 100;
int main()
{
int a,j;
int * arr = (int*)malloc(sizeof(int)*max);
arr[max-1] = 1;
scanf("%d",&a);
factor( arr, a);
display(arr);
}
int factor( int arr[],int a)
{
if (!a) return;
int i,carry;
for(i=max-1;i>=0;i--)
{
arr[i] = (arr[i]*a) + carry;
carry = arr[i]/10;
arr[i] = arr[i]%10;
}
factor( arr, a-1);
}
int display(int arr[])
{
int i;
for ( i=0; i<max; i++)
{
printf("%d",arr[i]);
}
}
嗨,这是我找到数字阶乘的程序,但它给出了错误的答案,我不知道为什么......???
就像当我将输入作为 13 时,然后根据 myprogram 13 将在数组中被视为 1 和 3 但它给出随机数 -1216731443 -121673144 。我认为 malloc 有问题,但我无法识别它。
谢谢你