c语言 n的阶乘,算了前几个是对的,但总觉得那里错了,求高手指点。。

#include<stdio.h>
void main()
{
int n,m;
double sum=1;
while (1)
{
scanf("%d",&n);

for(m=1;m<=n;m++)
{
sum=sum*m;
}
printf("%5.2f\n",sum);
sum=1;
}
}

while (1)
死循环吧,你至少要有跳出循环的语句吧

scanf("%d",&n);
在下面加一个判断跳出循环的语句才好

if(n<0)
break;
再就是定义sum时,最好用long形式的,要不然这个可能要溢出追问

while (1)是用来无限输入用的阿,老师跟我们说的...

追答

是无限输入,是没问题的。
但是你怎么结束程序呢?不会ctrl+c结束吧,哈哈

程序总体来说算法是没问题的
阶乘需要考虑字长不够的问题,因为这个sum会非常大

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-20
这里就不用while了。就用下面的执行部分,我自己用的是输出整型:
#include"math.h"
main()
{

int a,b=1,c;
printf("please input c:\n");
scanf("%d",&c);
for(a=1;a<=c;a++)
{

b*=a;
}
printf("Answer is:%d\n",b);
}
第2个回答  2011-12-20
printf("%5.2f\n",sum);输出的宽度少了,改一下就可以,如:printf("%.2f",sum);
我也是初学者,不知道对不对,但是我觉得应该就是这样。
第3个回答  2011-12-20
double sum=1.0 既然是double类型就要有小数点,,,我也是刚学的
第4个回答  2011-12-20
sum精度不够吧