用C语言 从一的阶乘加到二十的阶乘
#include
double factorial(int n);//函数声明
int main( )
{
int i = 0;
const int MAX_NUM = 20;
double sum = 0;
//求1!+2! +...+20!
for (i=1; i<=MAX_NUM; i++)
sum = sum + factorial(i);
printf("1!+...+%d!=%.0f
",MAX_NUM, sum);//输出结果信息
}
//求阶乘函数的定义,20!的阶乘很大,需要用浮点数返回类型
double factorial(int n)
{
int i=0;
double s=1.0; //存放阶乘n!的乘积
if ( n<1 ) return -1;//参数不对,返回负数
for ( i=1; i<=n; i++ )
{
s = s*i;
}
return s;
}
//纯手工敲入,并运行验证,请给分,谢谢
#include
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
",sum);
//输出sum.
}
1、找到文件,新建,项目,点击项目新建一个文件。
2、会弹出这样的界面,选择为win32控制台程序,输入名称,然后点击确定。
3、在源文件右键,添加,新建项目;然后跳出窗口选择C++文件(.cpp),最后点击添加。
4、完成以上步骤,出现一个.cpp空文件文件请输入以下代码
5、显示结果如下:
main()
{
floatn,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!+3!...+20!=%e
",s);
}
扩展资料
C语言求阶乘
#include<stdio.h>
voidmain(void)
{
intjiecheng(intn);
intn,s;
do
{
printf("求谁的阶乘:");
scanf("%d",&n);
s=jiecheng(n);
if(s!=0)
{
printf("%d的阶乘是%d
",n,s);
}
printf("
");
}while(1);
}
intjiecheng(intn)
{
inti=1,s=1;
if(0==n)
return(s=1);
elseif(n>0)
{
for(i=1;i<=n;++i)
s=s*i;
return(s);
}
else
{
printf("ERROR!Again:
");
return(s=0);
}
}
#include<stdio.h>
int main()
{
long r=1l;
for(long i=1l;i<=20;i++)
r*=i;
printf("%ld",r)
return 0;
}
int i, j;
double sum, product;
sum=0.0;
for (i=1; i <= 20; i++)
{
product=1;
for(j=1; j <= i; j++)
{
product *= j;
}
sum += product;
}
魏种金锁: #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项.
信宜市17850916019: 求个C语言程序:将1到20的阶乘累加 - ?
魏种金锁: #includemain() { double res=1.0; int i; for(i=1;i
信宜市17850916019: c语言 1到20的阶乘之和 - ?
魏种金锁: i始终大于1,会出现死循环的,同时,20的阶乘相加,那结果会很大的,用int保存不下,得用double类型!示例代码,有问题再用度娘自己搜索吧.. //win7 x64 + vc6.0编译通过 #include<stdio.h> #include "stdlib.h" int main() { double fac(int n...
信宜市17850916019: C语言,算1到20阶乘的和 - ?
魏种金锁: s*=i相当于s=s*i,假如某一次循环中i=k(k代表某个自然数),s=S那么执行完s*=i后s=S*k;下一次循环时i=k+1,执行完s*=i后s=S*k*(k+1).而初始情况是i=1,s=1,根据数学归纳法可以推导出s中保存的值是1*2*...*(k+1).
信宜市17850916019: 跪求:编写c语言程序,求1到20的阶乘之和?
魏种金锁: 只是将上面仁兄的稍改了一下而已 #include <stdio> void main() { int t=1; int s = 0; for(int i=1;i<=20;i++) { t=t*i; s=s+t; } printf("%d", s); }
信宜市17850916019: 1阶乘到20阶乘的C++代码 - ?
魏种金锁: //用double类型可以解决这个问题,long类型的范围不够 #include #include #include #define N 20 double factorial(int x) { double sum=1; int i; for(i = 1;i <= x;i++) { sum*=i; } return sum; } int main() { double sum=1; int i; for(i = 1;i <= N;i++) { sum *= factorial(i); } printf("%.0f",sum); system("PAUSE"); return 0; }
信宜市17850916019: C语言求1 - 20的阶乘之和 - ?
魏种金锁: /* sum = 2561327494111820313 Press any key to continue */1 2 3 4 5 6 7 8 9 10 11#include <stdio.h>intmain() {__int64fact = 1,i,sum = 0;for(i = 1; i < 21; ++i) {fact *= i;sum += fact;}printf("sum = %I64d\n",sum);return0; }
信宜市17850916019: 用c语言实现1!+2!+3!+……+20! - ?
魏种金锁: 由于1的阶乘累加到20的阶乘得到的结果很大,int和long都存放不了这么大的数,所以用double型变量来存放, 代码如下: #includemain() { double s=0,t; int i,j; for(i=1;i
信宜市17850916019: 求1到20的阶乘和,,用C语言怎么整,,请高手来看看,,我这个对不??谢了 - ?
魏种金锁: 用递归调用吧最简单 int fan(int a) { sum+=20*fan(a-1); } 考试必考,最后用fun(20),但要sum在外面定义就出来了
信宜市17850916019: 在C++中怎样编写1的阶乘加2的阶乘一直加到20的阶乘???? - ?
魏种金锁: #include int fac(int n){ if(n==0||n==1) return 1; else return fac(n-1)*n; } void main(){ int i,sum=0; for(i=1;i<=5;i++) sum+=fac(i); printf("%d",sum); } 到5的阶乘...你参照