关于C语言的,急救

来源:百度知道 编辑:UC知道 时间:2024/09/23 12:34:12
#include<stdio.h>
double zhao(int n){
double fact=1;
int i;
for(i=1;i<=n;i++)
{fact=fact*i;}
return fact;}
main(){
int n;
double sum;
for(n=1;n<=20;n++)
{sum=sum+zhao(n);}
printf("%f\n",sum);
getch();}
怎么不对啊

sum 无初值

将double都改为float ,并赋初值

float zhao(int n){
float fact=1;
int i;
for(i=1;i<=n;i++)
{fact=fact*i;}
return fact;}
main(){
int n;
float sum=0.0;
for(n=1;n<=20;n++)
{sum=sum+zhao(n);}
printf("%f\n",sum);
getch();}

楼上的 我想知道为什么双精度的不可以啊?
请问楼主 你要输入的可是1!+2!+……+n!?
#include<stdio.h>
double zhao(int n)
{
double fact=1.0;
int i;
for(i=1;i<=n;i++)
{
fact=fact*i;
}
return fact;
}
void main()
{
int n;
double sum=0.0;
for(n=1;n<=20;n++)
{
sum=sum+zhao(n);
}
printf("%f\n",sum);
getchar();
}
这样已经没有问题了!还有楼主不要把N的值定义的太大,容易溢出

同意楼上说法

double sum=0.0;