C语言我这么求一个数的阶乘为啥得数不是我想要的

来源:百度知道 编辑:UC知道 时间:2024/04/30 08:28:24
#include<stdio.h>
main()
{
int i=0,n=0;
float fac=1.0;
printf("请输入一个数");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
fac=fac*i;
printf("%f",fac);
}
}

你把它改成整形的,把那个printf放外面
就只输出最后得数了

这么改:
#include<stdio.h>
main()
{
int i=0,n=0;
int fac=1;
printf("请输入一个数");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
fac=fac*i;
}

printf("%d",fac);
}

阶乘以前学习的时候好像只能用于整数间的运算啊,所以应该用整型,而不能用单精度。
另外,为了防止你输入的数比较大,导致产生int装不下的结果,最好用长整形保存运算阶乘的数,即long fac;

#include<stdio.h>
main()
{
int i=0,n=0;
float fac=1.0;
printf("请输入一个数");
scanf("%d",&n);
for(i=1;i<=n;i++)
fac=fac*i;
printf("%f",&fac);
}

printf句要提到for循环外面来,要不每乘一个数都会在屏幕打印出结果来