c语言20阶乘和
㈠ 用c语言求1~20的阶乘之和!
/**
**程序描述:求求1~20的阶乘之和。
**算法思路:先求出每一项的阶乘值,然后将所有项的阶乘值相加。
*/
#include<stdio.h>
#defineN20
typedefunsignedlonglonguInt64;//自定义类型
//求出每一项阶乘值的函数
uInt64fact(intn)
{
inti;
uInt64s;
for(i=s=1;i<=n;i++)
s*=i;//从1开始循环累加相乘
returns;
}
intmain()
{
uInt64s;
inti;
for(i=1,s=0;i<=N;i++)
s+=fact(i);//从第1项开始循环累加每一项的阶乘值
printf("1!+2!+3!+……+20!=%llu ",s);
return0;
}
㈡ 1到20阶乘的和用c语言表达
#include <stdio.h>
long jiecheng(int x)
{
long int i,k=1;
for(i=1;i<=x;i++)
k=k*i;
return k;
}
int main()
{
long int j,k=0;
int i;
for(i=1;i<=20;i++)
{
j=jiecheng(i);
k+=j;
}
printf("%ld ",k);
}
(2)c语言20阶乘和扩展阅读:
使用其他方法实现求1到20阶乘的和:
public class Main{
public static void main(String[] args){
int i,j;
int sum=0;
int a=1;
for(i=1;i<=20;i++){
for(j=1;j<=i;j++){
a*=j;
}
sum+=a;
}
System.out.print("sum=1!+2!+3!+...+20!="+sum);
}
}
㈢ 跪求:编写c语言程序,求1到20的阶乘之和
亲测可用
long jiecheng(int x)
{
long int i,k=1;
for(i=1;i<=x;i++)
k=k*i;
return k;
}
int main()
{
long int j,k=0;
int i;
for(i=1;i<=20;i++)
{
j=jiecheng(i);
k+=j;
}
printf("%ld ",k);
}
输出的结果是2561327494111820313
(3)c语言20阶乘和扩展阅读:
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
计算方法:
大于等于1:
任何大于等于1 的自然数n 阶乘表示方法:n! =1×2×3×...×(n-1)n或n! = n×(n-1)!
0的阶乘:0!=1。
参考资料:网络——阶乘
㈣ c语言1~20阶乘只和
#include<stdio.h>
#include<math.h>
intmain()
{
doublejiecheng(intx);//<==================
inta;doublec=0;doubleb;
for(a=1;a<=20;a++)
{
b=jiecheng(a);
c=c+b;
}
printf("%20.15e",c);
return0;
}
doublejiecheng(intx)//<==================
{
inty=1;doublek=1.0;
for(;y<=x;y++)
k=k*y;
return(k);
}
㈤ 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)。
㈥ C语言输出20之内的阶乘之和代码
#include<stdio.h>
intmain(){
__int64fact=1,i,sum=0;
for(i=1;i<21;++i){
fact*=i;
sum+=fact;
}
printf("sum=%I64d ",sum);
return0;
}
类型必须设置为__int64 或者long long 否则会溢出
你的代码就是这样 会溢出的
㈦ c语言计算1到20的阶乘的和,我的代码哪错了
在32伟环境下,20的阶乘已经超出int的范围,而i是个int,必然会溢出,结果就是错误的
把i定义成double就行了
#include<stdio.h>
main()
{
intn=0;
doublei=1.0;//double
doublesum=0;
for(n=0;n<20;n++)
{
i=i*(n+1);
sum=sum+i;
}
printf("sum=%lf ",i);
return0;
}
㈧ 利用C语言求阶乘 例如求20! 用循环和函数两种方法……
对于阶乘,你需要考虑到输入的数的大小,进行判断n<0,无阶乘;n==0||n==1阶乘为1;
n>1的就用户循环,或者调用函数来做
1.循环
#include<stdio.h>
void main()
{
float sum=1;
int n,i;
printf("please enter an integer number:");
scanf("%d",&n);
printf("\n");
if (n<0)
printf("n<0,data error!\n");
else if(n>1)
{
for(i=2;i<=n;i++)
sum=sum*i;
printf("%d!=%10.0f\n",n,sum);
}
else
if(n==0||n==1)
{
sum=1;
printf("%d!=%10.0f\n",n,sum);
}
}
2.函数
#include <stdio.h>
void main()
{
float fac(int n);
int n;
float y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%10.0f\n",n,y);
}
float fac(int n)
{
float f;
if(n<0)
{
printf("n<0,data error");
}
else
if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return (f);
}
㈨ c语言 1到20的阶乘之和
/**
**程序描述:求求1~20的阶乘之和。
**算法思路:先求出每一项的阶乘值,然后将所有项的阶乘值相加。
*/
#include<stdio.h>
#defineN20
typedefunsignedlonglonguInt64;//自定义类型
//求出每一项阶乘值的函数
uInt64fact(intn)
{
inti;
uInt64s;
for(i=s=1;i<=n;i++)
s*=i;//从1开始循环累加相乘
returns;
}
intmain()
{
uInt64s;
inti;
for(i=1,s=0;i<=N;i++)
s+=fact(i);//从第1项开始循环累加每一项的阶乘值
printf("1!+2!+3!+……+20!=%llu ",s);
return0;
}