阶乘给出错误答案 #包括 int max=100; int main() { int a,j; int*arr=(int*)malloc(sizeof(int)*max); arr[max-1]=1; scanf(“%d”和“&a”); 因子(arr,a); 显示(arr); } 整数因子(整数arr[],整数a) { 如果(!a)返回; int i,进位; 对于(i=max-1;i>=0;i--) { arr[i]=(arr[i]*a)+进位; 进位=arr[i]/10; arr[i]=arr[i]%10; } 因子(arr,a-1); } 整数显示(整数arr[] { int i; 对于(i=0;i

阶乘给出错误答案 #包括 int max=100; int main() { int a,j; int*arr=(int*)malloc(sizeof(int)*max); arr[max-1]=1; scanf(“%d”和“&a”); 因子(arr,a); 显示(arr); } 整数因子(整数arr[],整数a) { 如果(!a)返回; int i,进位; 对于(i=max-1;i>=0;i--) { arr[i]=(arr[i]*a)+进位; 进位=arr[i]/10; arr[i]=arr[i]%10; } 因子(arr,a-1); } 整数显示(整数arr[] { int i; 对于(i=0;i,c,C,我认为你得到“随机”的原因数字是因为您尚未初始化carry变量。在for循环中,您正在将未初始化的carry值添加到数组中,这将导致未定义的结果。如果您显示输出与您应该得到的值,这将非常有用。请尝试初始化“carry”变量。您可能会我还想在malloc之后将剩余的arr(除了1)归零;我不认为malloc会自动为你归零。哦,妈的,这是一个小问题,我无法确定。但是谢谢你的注释标记 #include<stdio.h> int max = 100; int main() { i

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

如果您显示输出与您应该得到的值,这将非常有用。请尝试初始化“carry”变量。您可能会我还想在malloc之后将剩余的
arr
(除了
1
)归零;我不认为
malloc
会自动为你归零。哦,妈的,这是一个小问题,我无法确定。但是谢谢你的注释标记
#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]);
    }
}