c语言 1到20的阶乘之和
//c4-8.c#include<stdio.h>intmain(){inti,p,sum=0;for(i=1;i<=20;i++){while(i>=1){p=1;p*...
//c4-8.c
#include<stdio.h>
int main ()
{ int i,p,sum=0;
for(i=1;i<=20;i++)
{ while(i>=1)
{ p=1;
p*=i;
i-=1;
}
sum+=p;
}
printf("sum=%d\n",sum);
return 0;
}
错在哪 展开
#include<stdio.h>
int main ()
{ int i,p,sum=0;
for(i=1;i<=20;i++)
{ while(i>=1)
{ p=1;
p*=i;
i-=1;
}
sum+=p;
}
printf("sum=%d\n",sum);
return 0;
}
错在哪 展开
展开全部
/**
**程序描述:求求1~20的阶乘之和。
**算法思路:先求出每一项的阶乘值,然后将所有项的阶乘值相加。
*/
#include <stdio.h>
#define N 20
typedef unsigned long long uInt64; //自定义类型
//求出每一项阶乘值的函数
uInt64 fact(int n)
{
int i;
uInt64 s;
for(i=s=1;i<=n;i++)
s*=i; //从1开始循环累加相乘
return s;
}
int main()
{
uInt64 s;
int i;
for(i=1,s=0;i<=N;i++)
s+=fact(i); //从第1项开始循环累加每一项的阶乘值
printf("1!+2!+3!+……+20!=%llu\n",s);
return 0;
}
2014-12-08
展开全部
i始终大于1,会出现死循环的,同时,20的阶乘相加,那结果会很大的,用int保存不下,得用double类型!示例代码,有问题再用度娘自己搜索吧。。
//win7 x64 + vc6.0编译通过
#include<stdio.h>
#include "stdlib.h"
int main()
{
double fac(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%0.lf\n",sum);
system("pause");
}
double fac( int n)
{
double m;
if (n==1)
m=1;
else m=fac(n-1)*n;
return(m);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的程序有点乱,也有的错的地方,比如一开始的int unit51()不应该是int main()吗?还有倒数第三行printf("1到20的阶乘和为:\n",sum);也是错的,应该改为printf("1到20的阶乘和为:%d\n",sum);但是貌似这样最后输出的也只有一个数而不是1到20的阶乘,最后一点,20的阶乘是一个非常大的数,用int根本不行。程序就不给你改了,需要的话我给你写一个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-15
展开全部
#include<stdio.h>void main()
{
int i;
double t=1,sum=0; //由于20的阶乘int和long int都放不下.所以用double.
for(i=1;i<=20;i++) //从1循环到20.
{
t = t * i; //计算1~20的阶乘.
sum = sum + t; //将1~20的阶乘累加到sum中.
}
printf("%.0f\n",sum); //输出sum.
}
{
int i;
double t=1,sum=0; //由于20的阶乘int和long int都放不下.所以用double.
for(i=1;i<=20;i++) //从1循环到20.
{
t = t * i; //计算1~20的阶乘.
sum = sum + t; //将1~20的阶乘累加到sum中.
}
printf("%.0f\n",sum); //输出sum.
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2432902008176640000
请按任意键继续. . .
代码:
#include<stdio.h>
#include "stdlib.h"
int main()
{
double fac(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%0.lf\n",sum);
system("pause");
}
double fac( int n)
{
double m;
if (n==1)
m=1;
else m=fac(n-1)*n;
return(m);
}
你求的是阶乘的累加和。20项很大了,查过了整形的范围了。用double就可以了。
在就是 递归表达式:
n==1 return 1
else
return n*f(n-1)
请按任意键继续. . .
代码:
#include<stdio.h>
#include "stdlib.h"
int main()
{
double fac(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%0.lf\n",sum);
system("pause");
}
double fac( int n)
{
double m;
if (n==1)
m=1;
else m=fac(n-1)*n;
return(m);
}
你求的是阶乘的累加和。20项很大了,查过了整形的范围了。用double就可以了。
在就是 递归表达式:
n==1 return 1
else
return n*f(n-1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询