在这里,您的数组索引应该从 0 而不是 1 开始,我的意思是j
并且i
应该在 for 循环中初始化为 0。
此外,尝试使用调试器,这将帮助您发现错误。
如果我的猜测是正确的,您使用 turbo C,如果是,那么我的建议是您开始使用 MinGW 或 Cygwin 并尝试在 CLI 上编译,无论如何只是一个建议。
可能还有一个问题,这就是为什么 codechef 不接受你定义的函数来接受整数然后你传递数组的代码,也许这段代码对你有用:
#include<stdio.h>
int fact(int a[],int n)// here in function prototype I have defined it to take array as argument where n is array size.
{
int j=0,f=1,k;
for (k=a[j];k>0;k--)
f*=k;
return f;
}
int main()
{
int t,i,n[100],s[100],j;
setbuf(stdout,NULL);
printf("enter the test cases\n");
scanf("%d",&t); //given t test cases
for(i=0;i<t;i++)
{
scanf("%d",&n[i]); //value of the test cases whose factorial is to be calculated
}
for(j=0;j<t;j++)
{
s[j]=fact(&n[j],t);// and here I have passed it as required
printf("\n %d",s[j]); //output
}
return 0;
}
注意:-在 OP 的最后一次编辑之后,此实现有一些限制,它无法计算较大数字的阶乘,例如100
,再次编辑将问题放在不同的轨道上,此答案仅适用于小阶乘