c語言求1到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語言求1到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階乘的和,怎麼寫
#include<stdio.h>
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\n",sum);
//輸出sum.
}
㈣ 求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);
}
(4)c語言求1到20的階乘擴展閱讀:
用遞歸方法
#include<stdio.h>
int func(intn){
int m=0;
if(n==1){
return1;
}
m=n*func(n-1);
returnm;
}
int main(intargc,constchar*argv[]){
int sum=0;
for(inti=1;i<=20;i++)
{
sum=sum+func(i);
}
printf("%d\n",sum);
return0;
}
㈤ C語言,求1到20階乘,初學者,求幫助!
#include<stdio.h>
void main()
{
int i,j,n;
double sum;
double a[20]={1};
j=1;
i=1;
while(j<=19)
{
if(i-1==0)
{
printf("%d的階乘為%lf\n",i,a[j-1]);//這里是1的階乘
}
if(i<(j+1))
{
i++;
a[j]=a[j-1]*i;
printf("%d的階乘為%lf\n",i,a[j]);
}
j++;
}
}
樓主,你把括弧弄清楚丫,思想是對的,但是你把while對應的括弧弄清楚,你程序中的第二個while()完全沒有必要,用if()就行
㈥ C語言1到20的階乘
#include<stdio.h>
intmain()
{
inti=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的階乘和為: ",sum");
return0;
}
㈦ 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)。
㈧ 求1到20的階乘和(C語言演算法)看看哪兒有錯
錯誤在於你每次計算了n的階乘,放在變數y中,下一次循環的時候沒有清除y中的數,還是上一個數的階乘,直接拿來乘了。
可以在sum=y+sum;這一句下面加一句y=1;
㈨ 1到20的階乘 C語言
用遞歸就行了,問題是階乘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;
}
㈩ C語言求1-20的階乘之和
/*
sum = 2561327494111820313
Press any key to continue
*/
#include<stdio.h>
intmain(){
__int64fact=1,i,sum=0;
for(i=1;i<21;++i) {
fact*=i;
sum+=fact;
}
printf("sum=%I64d ",sum);
return0;
}