#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有问题,但我无法识别它。
谢谢
答案 0 :(得分:4)
我认为您获得“随机”数字的原因是因为您尚未初始化carry
变量。在for
循环中,您将未初始化的值carry
添加到数组中,这将导致未定义的结果。