C语言什么错误? N阶层代码?

来源:百度知道 编辑:UC知道 时间:2024/04/28 06:53:31
#include "stdio.h"
main()
{
int i,n;
printf("input number :");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
n*=i;
}
printf("%d \n",n);
}
输出的是负数???

上面这位兄弟的程序也不对吧,把键盘上输入的数字赋给sum,又把它赋给t,而sum的值并没有变化,如果从键盘输入的上是5而t和sum都是5,而sum=sum*i:sum=5*1;sum=5*2;sum=10*3:...,这样并不对
还有如i<t的话就只能乘到4
我是这样写的:

include <stdio.h>
void main()
{
int i,n;
long num=1;
/*下面这个循环是为了不让n为负数*/
do
{
printf("\nPlease enter a number (>=0)");
scanf("%d",&n);
}while(n<1);

for(i=1;i<=n;i++)
{
num*=i;
}

printf("\n%d!=%ld",n,num);

}
也可以用递归的方法:
#include <stdio.h>

long jiecheng(int n)
{
if(n == 0)
{
return 1;
}
return n*jiecheng(n-1);
}
void main()
{
int n;
long num;
do
{
printf("\nPlease enter a number(>=0):");
scanf("%d",&n);
}while(n<0);

num = jiecheng(n);
printf("\n%d!=%ld",n,num);

}

输出负