| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:请看一看这个程序该怎样改!
只看楼主 加入收藏
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
收藏
已结贴  问题点数:10 回复次数:11 
请看一看这个程序该怎样改!
12、求1!+2!+3!+...+20!之和
#include<stdio.h>
main()
{
 long int  i,j,fact=1,sum=0;
  for(i=1;i<=20;i++)
   {     sum=sum+fact;
     for(j=1;j<=i;j++)
      {
       fact=fact*j;
       }
   }
   printf("%ld\n",sum);      getch();

 }这个程序错在那里了,请指教!
搜索更多相关主题的帖子: long 
2011-01-05 14:31
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
如果是WIN-TC请加﹟include<conio.h>

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-05 14:52
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
收藏
得分:0 
还是不对呀!
2011-01-05 15:33
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
20 的阶乘应该是用数组存储.
2011-01-05 15:37
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:6 
   for(j=1;j<=i;j++)
      {
       fact=1;
       fact=fact*j;
       }
这里不对吧 当i为2时fact=2,而当i为3时则fact=2*1*2*3了似乎

粗心是大敌
2011-01-05 15:39
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:4 
程序代码:
#include<stdio.h>
﹟include<conio.h>
main()
{
long int  i,j,fact=1,sum=0;
  for(i=1;i<=20;i++)
   {          for(j=1;j<=i;j++)
      {
       fact=fact*j;
       }
       sum=sum+fact;
         fact=1;   //还原,不然会出错

   }
   printf("%ld\n",sum);   
  getch();
}

小代码,大智慧
2011-01-05 15:41
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 6楼 点线面
你看看你的程序结果对不对再发嘛,只一个 20! 你的 long 就无法存得下了,何况还是它们几项的和呢?

这个程序得用到大数加法.
2011-01-05 15:50
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
收藏
得分:0 
谢谢大家了!
2011-01-05 15:56
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
哦,忘了,long长度有限,用数组解吧!

小代码,大智慧
2011-01-05 16:01
bjl2010
Rank: 2
等 级:论坛游民
帖 子:23
专家分:27
注 册:2010-12-13
收藏
得分:0 
#include<stdio.h>
int main()
{
long int  i,j,fact=1,sum=0;
  for(i=1;i<=20;i++)
   {     sum=sum+fact;
     for(j=1;j<=i;j++)
      {
       fact=fact*j;
       }
   }
   printf("%ld\n",sum);      
   getchar();
   return 0;
}
结果:1444231216  不知道对不对!
2011-01-05 17:02
快速回复:请看一看这个程序该怎样改!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041950 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved