#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 に問題があると思いますが、特定できません。
ありがとうございました