Small factorials

#include<stdio.h>
int main()
{
long int f[100];
int t,n,i,r;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
r=1;
while(n>1)
{
r=r*n;
n–;
}
f[i]=r;
}
for(i=0;i<t;i++)
printf("%ld\n",f[i]);
return 0;
}
What is the problem of above program?
Give a Wrong Answer… Why?