gpt4 book ai didi

在 C 中计算阶乘会导致错误的答案

转载 作者:行者123 更新时间:2023-11-30 21:11:03 26 4
gpt4 key购买 nike

我试图解决 codechef 上的问题。问题如下:

我必须找到数字 n (1<=n<=100) 的阶乘。具体问题是here .

我编写了以下代码来解决这个问题。

#include<stdio.h>

int main() {

int ar[160],m,temp,temp1,t,x,i,j;
scanf("%d",&t);
int n[t];
for(i=0;i<t;i++)
scanf("%d",&n[i]);
for(j=0;j<t;j++)
{
temp1=n[j];
if(n[j]==100)
{
ar[0]=0;
ar[1]=0;
ar[2]=1;
m=3;
}
else if(n[j]<100&&n[j]>=10)
{
ar[0]=temp1%10;
ar[1]=temp/10;
m=2;
}
else if(n[j]<10)
{
ar[0]=temp1%10;
m=1;
}
n[j]=n[j]-1;
while(n[j]>=1)
{
temp=0;
for(i=0;i<m;i++)
{
x=ar[i]*n[j]+temp;
ar[i]=x%10;
temp=x/10;
}
while(temp>0)
{
m=m+1;
ar[m-1]=temp%10;
temp=temp/10;
}
n[j]=n[j]-1;
}
for(i=m-1;i>=0;i--)
printf("%d",ar[i]);
printf("\n");
}
return 0;
}

但是我在评估方面得到了错误的答案。不过,我的代码在 Ideone.com 上运行良好,在我的机器上运行 gcc。多次查看代码后我无法确定我的错误?如果大家能指出其中的错误,我将不胜感激。

最佳答案

我运行了这个:

gcc -o a a.c
echo 100 $(seq 1 100) | ./a

情况 n=10 明显被破坏(它产生输出 00),但许多其他行看起来没问题。

快速浏览一下当 n=10 时解析输入的代码,显示出看起来像拼写错误的内容:“temp”应该是“temp1”。

关于在 C 中计算阶乘会导致错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26189250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com