帮忙改错。求∑n!(n=1->20),(即求1!+2!+3!+4!+5!+…+20!)

xiaoxiaoyu03 2010-11-08 09:28:41
求∑n!(n=1->20),(即求1!+2!+3!+4!+5!+…+20!)
我写的,运行不对,找不出哪错了。求教。
main()
{ int a,i,n,m;
long s=1,sum=0;
scanf("%d",&n);
for(m=1;m<=n;m++)
{ for(i=1;i<=m;i++)
s*=i;
sum+=s;
}
printf("sum=%ld\n",sum);
getch();
}
...全文
1459 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wissup 2010-11-09
  • 打赏
  • 举报
回复
这个要注意了!int能不能装下这么大一个值哦!
ericming200409 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chinaxiayunhai 的回复:]
不用这么麻烦啊,又循环嵌套,又这么多的变量。
给你个参考:
#include "stdio.h"
void main()
{
int i,s=0,t=1;
for(i=1;i<=5;i++)
{
t*=i;
s+=t;
}
printf("sum=%d\n",s);
}
[/Quote]

这个是不行的,呵呵
ericming200409 2010-11-09
  • 打赏
  • 举报
回复
不好意思,没有对齐好

long fun()
{
long sum = 0, factorial;

for(int i = 0; i < 20; i++)
{
factorial = 1;
for(int j = 1; j <= i + 1; j++)
{
factorial *= j;
}

sum += factorial;
}

return sum;
}
ericming200409 2010-11-09
  • 打赏
  • 举报
回复

long fun()
{
long sum = 0, factorial;

for(int i = 0; i < 20; i++)
{
factorial = 1;
for(int j = 1; j <= i + 1; j++)
{
factorial *= j;
}

sum += factorial;
}

return sum;
}
xiaoxiaoyu03 2010-11-09
  • 打赏
  • 举报
回复
谢谢各位了。我懂了。
無_1024 2010-11-09
  • 打赏
  • 举报
回复
main()
{ int a,i,n,m;
long s=1,sum=0;
scanf("%d",&n);
for(m=1;m<=n;m++)
{ for(i=1;i<=m;i++)
s*=i;
sum+=s;
s =1;
}
printf("sum=%ld\n",sum);
getch();
}
bobommsky 2010-11-09
  • 打赏
  • 举报
回复

#include<stdio.h>

int main(void)
{
int i,m;
int sum = 0;
int sum1=1;
scanf("%d",&m);
for(i = 1;i<=m;i++){
sum1=sum1*i;
sum+=sum1;
}
printf("%d\n",sum);
return 0;
}



这个肯定对
zfmy_lhb 2010-11-09
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
void main()

{ int m,i;

long s=1,sum=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
s*=i;
sum+=s;
}
printf("sum=%ld\n",sum);

system("pause");
}
你的程序用了2个for循环,导致sum值多加了循环次数。。。达不到预期的效果的
anyone-else 2010-11-08
  • 打赏
  • 举报
回复
不用这么麻烦啊,又循环嵌套,又这么多的变量。
给你个参考:
#include "stdio.h"
void main()
{
int i,s=0,t=1;
for(i=1;i<=5;i++)
{
t*=i;
s+=t;
}
printf("sum=%d\n",s);
}
我是小数位 2010-11-08
  • 打赏
  • 举报
回复

int main()
{ int m,i;

long s=1,sum=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
s*=i;
sum+=s;
}
printf("sum=%ld\n",sum);
return 0;
}
Csuxiaowu 2010-11-08
  • 打赏
  • 举报
回复
你的s需要每次一开始都是1
而现在这里它改变了
for(m=1;m<=n;m++)
{
long s = 1;
for(i=1;i<=m;i++)
s*=i;
sum+=s;
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧