阶乘给出了错误的答案

时间:2012-05-26 06:43:46

标签: c

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

谢谢

1 个答案:

答案 0 :(得分:4)

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