C语言 计算N的阶乘 哪里出错了

#include "stdafx.h"
#include <stdio.h>int main(int argc, char* argv[])
{

int n;
int factorial=1;
int nonnegative integer;

printf ("Enter the nonnegative integer: ");
scanf("%d", &n); if (n<0)
printf("\n"); else
{if (n==0)<br> factorial *=1;<br> else <br> factorial*=n;}
--n;}
printf("%d! is %a\n", n, factorial) ;
return 0 ;
}

#include <stdio.h>
#include <conio.h>int main(int argc, char* argv[])
{
int n;
int factorial=1; printf("Enter the non-negative integer: ");
scanf("%d", &n); if (n<0)
printf("\n"); else
{
int i=1;
while(i<=n)
{
factorial *= i;
i++;
}
}

printf("%d! is %d\n", n, factorial);
getch();
return 0 ;
}你的逻辑有错,变量定义也不对,不同变量之间需要逗号分开。且你的这个声明也没实际意义。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-12
n不等于0的情况下,用循环来做阶乘while(n>0){factorial*=n;--n}
第2个回答  2013-08-12
while(n > 0) {
factorial*=n;
n--;
}