阶乘给出错误答案 #包括 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]);
}
}