-9
#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 有问题,但我无法识别它。

谢谢你

4

1 回答 1

4

我认为你得到“随机”数字的原因是你没有初始化carry变量。在for循环中,您将未初始化的值添加carry到数组中,这将导致未定义的结果。

于 2012-05-26T06:56:46.907 回答