用c语言编程,求从1的阶乘一直加到20的阶乘。

Posted

tags:

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

大家好呀!我是c语言的初学者,不知道怎么做?帮帮我吧!谢谢噢!!!!!!!!!!

1、首先打开C语言编辑器,新建一个c语言的文件,导入头文件并设置一个主函数:

2、程序中设置一个循环的临时变量和接受阶乘和的sum变量,循环中先遍历出20以内的数字子,然后计算每个数的阶乘,在将它们相加起来,因为是一个非常大的数,所以这里sum是double类型的,最后把结果输出就可以了:

3、最后调试编译程序,就会看到输出的20阶乘内的和了,是一个非常大的数。以上就是用c语言求20以内阶乘和的方法:

参考技术A   #include<stdio.h>
  void main()
  
  float a,b,s,sum;
  sum=0;
  for(a=1;a<=20;a++)
  
  for(s=1,b=1;b<=a;b++)
  s=s*b;

  sum=sum+s;
  
  printf("%e\n",sum);
  
先求出第n项阶乘,然后把前n-1项阶乘的和加上第n项。
参考技术B czx99201的程序不好。重复计算。阶乘不必每次都计算。而且为什么要用浮点?我的程序如下:
main ()
long a=1, sum=0;
int i;
for (i=1; i<=20; i++)
a *= i;
sum += a;

printf ("%ld\n", sum);
参考技术C #include<stdio.h>
void main()

float a,b,s,sum;
sum=0;
for(a=1;a<=20;a++)

for(s=1,b=1;b<=a;b++)
s=s*b;

sum=sum+s;

printf("%e\n",sum);
参考技术D #include <stdio.h>
main()
long long i,s=1,ss=0;
for(i=1;i<=20;i++)

s*=i;
ss+=s;

printf("ss=%lld",ss);


输出ss=2561327494111820313
这才是正确答案

1到20的阶乘 C语言

#include<stdio.h>
int main()

int fac(int n);
int sum=0,m,i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%d",sum);
return 0;

int fac( int n)

int m;
if (n==1)
m=1;
else m=fac(n-10)*n;
return(m);

哪里错了啊

用递归就行了,问题是阶乘1到20已经溢出了unsigned
long
int的最大数值,1到16就已经溢出了,何况你的还是有符号的,比无符号的少差不多一半.
这个用递归实现的.
#include<stdio.h>
void
main()

int
fac(int
x);
unsigned
long
int
y;
int
x;
printf("请输入一个整数:");
scanf("%d",&x);
y=fac(x);
printf("%ld\n",y);

int
fac(int
x)

unsigned
long
int
y;
if(x==1)

y=1;

else
y=fac(x-1)*x;
return
y;
参考技术A 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)本回答被提问者采纳
参考技术B for(i=1;i<=20;i++)
m=fac(i);
sum+=m; 这里改成
for(i=1;i<=20;i++)

m=fac(i);
sum+=m;
//应该是你的for循环的范围搞错了追问

麻烦你再看一下 怎么还是不行啊====

追答

fac(n-10)是不是要改成n-1

参考技术C 被调用函数里应该是
static int m=1;
m*=n;
return m;

以上是关于用c语言编程,求从1的阶乘一直加到20的阶乘。的主要内容,如果未能解决你的问题,请参考以下文章

用C语言 从一的阶乘加到二十的阶乘

1到20的阶乘 C语言

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

1到20阶乘的和用c语言表达

C语言1到20的阶乘

c语言 1到20的阶乘之和