1到20的階乘C語言,求1到20的階乘之和的c語言程式怎麼編寫?

時間 2022-04-24 13:11:44

1樓:波合美秘曾

用遞迴就行了,問題是階乘1到20已經溢位了unsignedlong

int的最大數值,1到16就已經溢位了,何況你的還是有符號的,比無符號的少差不多一半.

這個用遞迴實現的.

#include

void

main()

intfac(int

x)else

y=fac(x-1)*x;

returny;}

2樓:匿名使用者

2432902008176640000

請按任意鍵繼續. . .

**:#include

#include "stdlib.h"

int main()

double fac( int n)

你求的是階乘的累加和。20項很大了,查過了整形的範圍了。用double就可以了。

在就是 遞迴表示式:

n==1 return 1

else

return n*f(n-1)

3樓:匿名使用者

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

m=fac(i);

sum+=m; 這裡改成

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

//應該是你的for迴圈的範圍搞錯了

4樓:百丶扯蛋炳丬

被呼叫函式裡應該是

static int m=1;

m*=n;

return m;

用c語言程式設計,求從1的階乘一直加到20的階乘。 5

5樓:飛喵某

1、首先開啟c語言編bai輯器,新du

建乙個c語言的檔案zhi,匯入頭dao檔案並設定乙個主函式版:

2、程式中設定乙個權迴圈的臨時變數和接受階乘和的sum變數,迴圈中先遍歷出20以內的數字子,然後計算每個數的階乘,在將它們相加起來,因為是乙個非常大的數,所以這裡sum是double型別的,最後把結果輸出就可以了:

3、最後除錯編譯程式,就會看到輸出的20階乘內的和了,是乙個非常大的數。以上就是用c語言求20以內階乘和的方法:

6樓:匿名使用者

czx99201的程式不好。重

bai復計算。

階乘du

不必zhi每次都計算。而且為什麼dao要用浮點?專我的屬程式如下:

main ()

printf ("%ld\n", sum);

7樓:愛是一生的語病

#include

main()

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

}輸出ss=2561327494111820313這才是正確答回案答

8樓:育知同創教育

抄#include

baivoid main()

printf("%e\n",sum);

}先求du出第n項階乘,zhi然後把前n-1項階乘的dao和加上第n項。

9樓:匿名使用者

#include

void main()

printf("%e\n",sum);}

求1到20的階乘之和的c語言程式怎麼編寫?

10樓:運籌天下

1、程式分析:此程式只是把累加變成了累乘。

2、程式源**

main()

float n,s=0,t=1;

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

t*=n;

s+=t;

3、c語言介紹:

(1)c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

(2)儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平台的特性,以乙個標準規格寫出的c語言程式可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平台。

(3)二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

11樓:1024程式設計師

c語言經典例子之求1+2!+3!+...+20!的和

c語言 1到20的階乘之和

12樓:匿名使用者

i始終大於1,會出現死迴圈的,同時,20的階乘相加,那結果會很大的,用int儲存不下,得用double型別!示例**,有問題再用度娘自己搜尋吧。。

//win7 x64 + vc6.0編譯通過#include

#include "stdlib.h"

int main()

double fac( int n)

13樓:匿名使用者

#include

int main()

sum += p;

}printf("sum=%d\n", sum);

return 0;}

14樓:

/****程式描述:求求1~20的階乘之和。

**演算法思路:先求出每一項的階乘值,然後將所有項的階乘值相加。

*/#include

#define n 20

typedef unsigned long long uint64;  //自定義型別

//求出每一項階乘值的函式

uint64 fact(int n)

int main()

15樓:文大寬

你的程式有點亂,也有的錯的地方,比如一開始的int unit51()不應該是int main()嗎?還有倒數第三行printf("1到20的階乘和為:\n",sum);也是錯的,應該改為printf("1到20的階乘和為:

%d\n",sum);但是貌似這樣最後輸出的也只有乙個數而不是1到20的階乘,最後一點,20的階乘是乙個非常大的數,用int根本不行。程式就不給你改了,需要的話我給你寫乙個。

16樓:匿名使用者

2432902008176640000

請按任意鍵繼續. . .

**:#include

#include "stdlib.h"

int main()

double fac( int n)

你求的是階乘的累加和。20項很大了,查過了整形的範圍了。用double就可以了。

在就是 遞迴表示式:

n==1 return 1

else

return n*f(n-1)

17樓:匿名使用者

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

m=fac(i);

sum+=m; 這裡改成

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

//應該是你的for迴圈的範圍搞錯了

18樓:匿名使用者

#includevoid main()

printf("%.0f\n",sum); //輸出sum.}

19樓:匿名使用者

#include

void main ()

1到20階乘的和用c語言表達

20樓:跪著作揖

#include

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\n",k);

擴充套件資料

使用其他方法實現求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);

21樓:風若遠去何人留

一、演算法分析:

計算階乘和分成兩步:

1 計算階乘。 對於n的階乘,從1累乘到n即可。

2 每個階乘相加。

於是演算法可以設計為,從1到20迴圈,計算每個數的階乘,並累加。

由於n!=(n-1)! *n, 所以每次計算階乘,可以利用上次的結果,減少運算量。

二、**實現:

#include

int main()

printf("%lld\n", s);//輸出結果return 0;

}三、輸出結果:

四、注意事項:

1 由於20階乘和很大,達到2.56*10^18,所以32位的int是儲存不下的。 必須使用64位的long long。 否則會出現溢位現象。

2 如果是vc/vs一類的ide,會不支援long long, 需要修改型別為__int64。

22樓:癯月笑浮生

#include

int jiecheng(int n);

int main(void)

printf("%d\n", sum);

return 0;

}int jiecheng(int n)

return k;}

23樓:匿名使用者

少了乙個迴圈好吧,誤人子弟

用c語言編寫1到10的階乘

24樓:

#include

int main()

擴充套件資料:在c語言中,有三種型別的迴圈語句:for語句、while語句和do while語句。分別介紹如下:

forfor為當型迴圈語句,它很好地體現了正確表達迴圈結構應注意的三個問題:

⑴控制變數的初始化。

⑵迴圈的條件。

⑶迴圈控制變數的更新。

while:

while結構迴圈為當型迴圈(when type loop),一般用於不知道迴圈次數的情況。維持迴圈的是乙個條件表示式,條件成立執行迴圈體,條件不成立退出迴圈。

while語句格式為:

while(條件表示式)

迴圈體每次執行迴圈體前都要對條件表示式進行判斷。

25樓:匿名使用者

思路:先定義乙個函式求乙個數的階乘,接著依次從1到10呼叫該函式就1到10的階乘並輸出。

#include

int fun(int n)

int main() /*

輸出:1的階乘為:1

2的階乘為:2

3的階乘為:6

4的階乘為:24

5的階乘為:120

6的階乘為:720

7的階乘為:5040

8的階乘為:40320

9的階乘為:362880

10的階乘為:3628800*/

26樓:小e參上

#inculd

main()}

27樓:匿名使用者

#include

#include

int main( )

printf("%d", a);

system("pause");

return 0;}

28樓:匿名使用者

#include

long int jfc(int n)

int main(void)

return 0;

29樓:匿名使用者

#include

void main()

printf("%ld\n",t);}

30樓:

return 1*2*3*4*5*6*7*8*9*10;

用c語言求1~20的階乘之和!

31樓:

/****程式描述:求求1~20的階乘之和。

**演算法思路:先求出每一項的階乘值,然後將所有項的階乘值相加。

*/#include

#define n 20

typedef unsigned long long uint64;  //自定義型別

//求出每一項階乘值的函式

uint64 fact(int n)

int main()

32樓:匿名使用者

#includevoid main()

printf("%.0f\n",sum); //輸出sum.}

c語言1的階乘加到到5的階乘。。哪錯了

變數s沒有重新初始化為1.在最外層迴圈之後新增一句s 1 如下 include include main printf d sum include include main printf d sum 把倒數第三行中間等於去掉。因為你執行此行時n已經 了 函式a用來求乙個數的階乘,函式b用來求從1到這...

求一道C語言程式設計題 求n的階乘,c語言程式設計 輸入整數n,求n的階乘 並輸出。

思路 所謂n的階乘就是從1到n的累積,所以可以通過乙個for迴圈,從1到n依次求積即可。參考 include stdio.h int main 執行結果 例如求5的階乘 5120 求一道c語言程式設計題 求n的階乘 include long int fun int n int main void i...

c語言程式設計1到100的平方和,c語言程式設計1到100的平方和

思路 定義乙個函式求其平方數,接著for迴圈從1到100累加求和。include stdio.h int fun int n int main 執行結果 平方和為 338350 5降落 include main 每個人理解的意思不一樣,程式也就不一樣。這看你怎麼理解,我把你的問題理解為整數1 100...

c 語言求陣列數的眾數,c 語言求1個陣列15個數的眾數

include 快速排序 int quick sort int a,int n,int left,int right temp a i a i a j a j temp a left a j a j s quick sort a,n,left,j 1 quick sort a,n,j 1,right...

c語言設計,已知序列1,2,3,5,8求第20項的值

如果是用c 實現,用控制次數的迴圈累加即可做出。include int main int a 21 i a 0 1,a 1 1 for i 2 i 20 i 斐波那契數列前兩個元素均為0 int i 0 迴圈變數 int n 20 數列需要求的個數 int sum 0 和變數 for i 2 i p...