求n的阶乘怎么写?我的分数是33分?

描述
给定正整数n,求不大于n的正整数的阶乘(即n!),输出阶乘的值。
输入
一个不大于20的正整数。
输出
计算出从1234……*n的值
样例输入 Copy
5
样例输出 Copy
120

不知道你具体代码怎么写的,33分意思是对了1/3了。对输入值应该进行检查,得大于0才行,

int jc(n)
{
  if(n<=0)
    return 0;
  int sum = 1;
  for(i=2;i<=n;i++)
      sum*=i;
  return sum;
}

void main()
{
  int sum = 0;
  int n = 0;
  while(1)
  {
    printf("请输入一个正整数:");
    scanf("%d",&n);
    if(n <= 0)
    {
      printf("必须输入正整数。\n");
      continue;
    }
    sum = jc(n);
    printf("%d的阶乘为:%d\n",n,sum);
    break;
}

你可能存在的问题:
临界值问题、存储结果类型问题等。
如有帮助望采纳。点击我回答右上角【采纳】按钮。

void fun(void){
  int a;
  scanf("%d",&a);
  if(a==0)
    printf("1\n");
  else{
    int i;
    long sum=1;
    for(i=1;i<=a;i++){
      sum*=i;
    }
    printf("%ld\n",sum);
  }
}