C语言求1-20的阶乘之和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言求1-20的阶乘之和相关的知识,希望对你有一定的参考价值。

1+2!+3!+4!...+20! C语言求阶乘,我的语句如下
#include <stdio.h>
int main()

int a=1,sum=1;
int i;
do

a=a*(a+1);
sum=sum+a;
i++;
while(i<=19);
printf("%d\n",sum);
return 0;

他没有进行循环,请问这是为何?

i没有初始化,加上i = 0,否则i是乱码,另外1到20的阶乘值很大,会数据溢出,应该用__64int或者long long (可存储2^64位数)来定义sum。 参考技术A

/*

sum = 2561327494111820313

Press any key to continue

*/

#include <stdio.h>
 
int main() 
__int64 fact = 1,i,sum = 0;
for(i = 1; i < 21; ++i)
fact *= i;
sum += fact;

printf("sum = %I64d\\n",sum);
return 0;

本回答被提问者和网友采纳
参考技术B int i; 这里定义了 i 这个变量,但是没有初始化为0,所以 i 的值是不确定的,有极大的概率会大于 19 ,所以循环条件就不成立了。 参考技术C 没进循环式因为 i没初始化, i是随机值,可能大于19 参考技术D 你的i没有赋初始值追问

后来对i进行赋值后 感觉这个数据也不对

C语言1到20的阶乘

#include<stdio.h>
#include<stdlib.h>
int unit51()

int i=20,z=20,h=1,sum=0;
for (;z<=1;)


while(i>0)



h=i*h;
i--;


sum=sum+h;
z--;
i=z;


printf("1到20的阶乘和为:\n",sum);
return 0;

做出来不显示结果- -。

你的程序有点乱,也有的错的地方,比如一开始的int unit51()不应该是int main()吗?还有倒数第三行printf("1到20的阶乘和为:\n",sum);也是错的,应该改为printf("1到20的阶乘和为:%d\n",sum);但是貌似这样最后输出的也只有一个数而不是1到20的阶乘,最后一点,20的阶乘是一个非常大的数,用int根本不行。程序就不给你改了,需要的话我给你写一个。追问

那你写吧- -、

追答#include "stdio.h"
void main()

  int i;
  double M=1;
  for(i=1;i<=20;i++)
  
   M=M*i;
   printf("%2d!=%.0f\\n",i,M);
  
 
结果:
 1!=1
 2!=2
 3!=6
 4!=24
 5!=120
 6!=720
 7!=5040
 8!=40320
 9!=362880
10!=3628800
11!=39916800
12!=479001600
13!=6227020800
14!=87178291200
15!=1307674368000
16!=20922789888000
17!=355687428096000
18!=6402373705728000
19!=121645100408832000
20!=2432902008176640000
Press any key to continue

追问

= =、是阶乘和

追答

#include "stdio.h"

void main()

  int i;

  double M=1,sum=0;

  for(i=1;i<=20;i++)

 

   M=M*i;

   sum+=M;

 

  printf("XXX=%.0f\\n",M);

参考技术A #include<stdio.h>
int main()

   int i=20,j,z=20,h=1,sum=0;
   for(j=0;j<20;j++)
   
      while(i>0) 
       

           h=i*h;
           i--;
      
       sum=sum+h;
       z--;
       i=z;
      
   printf("1到20的阶乘和为:\\n",sum");
   return 0;

以上是关于C语言求1-20的阶乘之和的主要内容,如果未能解决你的问题,请参考以下文章

c语言 1到20的阶乘之和

C语言求阶乘倒数之和

C语言练习010:求1到10的阶乘之和

C语言for循环 求1--10阶乘的和

1到20的阶乘之和用C程序有点问题~哪为高手解决下

C语言,算1到20阶乘的和