C語言編寫求n階乘的函式,在主函式中輸入n,呼叫函式求n階乘。。謝謝

時間 2021-05-04 03:16:47

1樓:匿名使用者

#include

fun(int n)

printf("the result is : %d\n",sum);

return 0;

}main()

2樓:匿名使用者

#include

#include

unsigned long long fact(unsigned long long n)

int main()

3樓:匿名使用者

//因c語言資料型別限制,不能做大數的階乘運算//n的值超過22結果會不準確

#include

double jc( int n )

int main()

4樓:空雪夢見

int jc(int x)

5樓:

#include

int fun(int n)

int main()

c語言 程式設計實現求n!要求用定義求階乘的函式

6樓:飛喵某

1、開啟vs2017軟體,新建c語言的工程,首先開頭引入標頭檔案,然後呼叫先呼叫一下求階乘的函式和空的主函式,最下方定義prime函式用來求階乘:

2、主函式中用scanf函式接受使用者輸入的的數字,接著將輸入的數傳入處理階乘的函式中完成計算,最後輸出列印結果。prime函式有乙個引數,首先判斷是否為正數,然後用prime函式自身乘以引數s,最後返回值即可完成:

3、將程式編譯執行,彈出視窗輸入任意的數,計算階乘;這裡輸入7,得到結果是5040。以上就是c語言求階乘的方法:

7樓:文化廚子

#include

long fac(unsigned n)

else

}int main()

注意:0的階乘是1,不是0,因為階乘表示的是全排列,是從n個中取出n個的所有的取法總數。所以當n==0或者n==1時返回1。

8樓:匿名使用者

本人小白,多多指教

#pragma warning(disable:4996) //vs07防報錯

#include

#include

int factorial(int n)

return resulta;

}int sum(int n)

return resultb;

}int main()

還可以寫成:

#pragma warning(disable:4996)

#include

#include

int sum(int n)

return resultb;

}int main()

寫了兩個自定義函式: factorial()用來計算階乘,sum()用來計算累加值。

factorial()

第一部分:

n!=1x2x3...xn。設resulta=1x2x3....xn。用i表示第幾次計算。

數學計算的詳細步驟:

當i=1時, 1x1=1 第1次計算

當i=2時, 1x2=2 第2次計算

當i=3時, 2x3=6 第3次計算

當i=4時, 6x4=24 第4次計算

當i=n-1時 ax(n-1)=b 第n-1次計算

當i=n時, bxn=c 第n次計算

第二部分:

在c語言中乘法計算例如:int a=1;a=a*2意思是將a的原來的值(舊值)1x2將結果(新值)賦值給a,

a的值變為2.再進行a=a*3意思就是將a原來的值2x3將結果(新值)再次賦值給a,a的值變為6.

上面可以看出:(resulta簡寫為a)

i=1時,(a的舊值)1xi=(a的新值)1 。第1輪結束,a的值從舊值1變成了新值1.

(第一輪中a的新值1相對在第二輪中,看做是a的舊值,依次類推)

i=2時,(a的舊值)1xi=(a的新值)2。 第2輪結束,a的值從舊值1變成了新值2.

i=3時,(a的舊值)2xi=(a的新值)6。 第3輪結束,a的值從舊值2變成了新值6.

i=4時,(a的舊值)6xi=(a的新值)24。第4輪結束,a的值從舊值6變成了新值24.

i=n時,(a的舊值)bxi= (a的新值)b。 第n輪結束,a的值從舊值$變成了新值$(這個新值就是最終值).

第三部分:上面可以看出:

計算a的最終值:進行了n輪,迴圈計算:a的舊值xi=a的新值。

將a的舊值xi=a的新值,寫成**的形式:resulta=resulta*i;即resulta*=a;

從第二部分還能看出:i的初值是i=1;i的範圍是i<=n;i的變化是每次自身+1即i++;迴圈計算->for語句。

resulta初值是1.

int i,resulta=1;

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

sum()

第一部分:

從1!+2!+3!....+n!可以看出一共有n個階乘。設resultb=1!+2!+3!....+n!(resultb簡寫b)

當n=1,只有1!,0+1!=1 只有1次計算 。當n=2時有1!,2!,先計算0+1!=1再1+2!=3,有兩次計算。

當n=3,有1!,2!,3!。先算0+1!=1再1+2!=3再3+3!=9,有3次計算,依次類推

當n=n,有1!,2!.....n!。會有n次計算。用i表示第幾次計算。

換種寫法:

當i=1時,第一次計算 0+1!值=0+1=1

當i=2時,第二次計算 1+2!值=1+2=3

當i=3時,第三次計算 3+3!值=3+6=9

當i=4時,第四次計算 9+4!值=9+24=33

當i=n-1時第n-1次計算 e+(n-1)!值=a

當i=n時,第n 次計算 a+n!值=a+b=resultb

根據c中加法的意思:

i=1, b舊+ factorial(1)=b新 呼叫factorial()

i=2, b舊+ factorial(2)=b新

i=n, b舊+ factorial(i)=b新

第二部分:

寫成**:resultb=resultb+ factorial(i),

1的初值i=1;i的範圍i<=n;i每次自身加一i++;迴圈計算->for語句。

int i,resultb=0;

for(i=1;i<=n;i++){

resultb+= factorial(i)

9樓:匿名使用者

計算階乘的c#**:

for (;;)

console.writeline("的階乘值為", num, jc);

console.writeline("你是否還需要使用此階乘計算器,1-是,2-否");

int numb = int.parse(console.readline());

if (numb == 1)

if (numb == 2)

}console.readkey();

10樓:匿名使用者

long fact(long n)

}void main()

11樓:童末

#include

#include

using namespace std;

int main()cout<

return 0;}

c語言怎麼用遞迴呼叫函式的方法求n的階乘?

12樓:飛喵某

1、開啟vc6.0軟體bai,新建

乙個duc語言的專案:

2、接zhi下來編寫主程dao序,首先定義內用來求階乘的遞容歸函式以及主函式。在main函式裡定義變數sum求和,呼叫遞迴函式fact(),並將返回值賦予sum,最後使用printf列印sum的結果,主程式就編寫完了:

3、最後執行程式,觀察輸出的結果。以上就是c語言使用遞迴求階乘的寫法:

13樓:小甜甜愛亮亮

解決步驟:

#include

long fun(int n)

main()

語言標準

起初,c語言沒有官方標準。2023年由美國**電報公司(at&t)貝爾實驗室正式發表了c語言。布萊恩·柯林漢(brian kernighan) 和 丹尼斯·里奇(dennis ritchie) 出版了一本書,名叫《the c programming language》。

這本書被 c語言開發者們稱為k&r,很多年來被當作 c語言的非正式的標準說明。人們稱這個版本的 c語言為k&r c。 [3]

k&r c主要介紹了以下特色:

結構體(struct)型別

長整數(long int)型別

無符號整數(unsigned int)型別

把運算子=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。

即使在後來ansi c標準被提出的許多年後,k&r c仍然是許多編譯器的最 準要求,許多老舊的編譯器仍然執行k&r c的標準。

1970到80年代,c語言被廣泛應用,從大型主機到小型微機,也衍生了c語言的很多不同版本。

2023年,美國國家標準協會(ansi)成立了乙個委員會x3j11,來制定 c語言標準。 [4]

2023年,美國國家標準協會(ansi)通過了c語言標準,被稱為ansi x3.159-1989 "programming language c"。因為這個標準是2023年通過的,所以一般簡稱c89標準。

有些人也簡稱ansi c,因為這個標準是美國國家標準協會(ansi)發布的。

2023年,國際標準化組織(iso)和國際電工委員會(iec)把c89標準定為c語言的國際標準,命名為iso/iec 9899:1990 - programming languages -- c [5]  。因為此標準是在2023年發布的,所以有些人把簡稱作c90標準。

不過大多數人依然稱之為c89標準,因為此標準與ansi c89標準完全等同。

2023年,國際標準化組織(iso)和國際電工委員會(iec)發布了c89標準修訂版,名叫iso/iec 9899:1990/cor 1:1994[6]  ,有些人簡稱為c94標準。

2023年,國際標準化組織(iso)和國際電工委員會(iec)再次發布了c89標準修訂版,名叫iso/iec 9899:1990/amd 1:1995 - c integrity [7]  ,有些人簡稱為c95標準。

c99標準

2023年1月,國際標準化組織(iso)和國際電工委員會(iec)發布了c語言的新標準,名叫iso/iec 9899:1999 - programming languages -- c [8]  ,簡稱c99標準。這是c語言的第二個官方標準。

在c99中包括的特性有:

增加了對編譯器的限制,比如源程式每行要求至少支援到 4095 位元組,變數名函式名的要求支援到 63 位元組(extern 要求支援到 31)。

增強了預處理功能。例如:

巨集支援取可變引數 #define macro(...) __va_args__

使用巨集的時候,允許省略引數,被省略的引數會被擴充套件成空串。

支援 // 開頭的單行注釋(這個特性實際上在c89的很多編譯器上已經被支援了)

增加了新關鍵字 restrict, inline, _complex, _imaginary, _bool

支援 long long, long double _complex, float _complex 等型別

支援不定長的陣列,即陣列長度可以在執行時決定,比如利用變數作為陣列長度。宣告時使用 int a[var] 的形式。不過考慮到效率和實現,不定長陣列不能用在全域性,或 struct 與 union 裡。

變數宣告不必放在語句塊的開頭,for 語句提倡寫成 for(int i=0;i<100;++i) 的形式,即i 只在 for 語句塊內部有效。

允許採用(type_name) 類似於 c++ 的建構函式的形式構造匿名的結構體。

復合字面量:初始化結構的時候允許對特定的元素賦值,形式為:

struct test foo = , [1].a = 2 };

struct test foo = ; // 3,4 是對 .c,.d 賦值的

格式化字串中,利用 \u 支援 unicode 的字元。

支援 16 進製的浮點數的描述。

printf scanf 的格式化串增加了對 long long int 型別的支援。

浮點數的內部資料描述支援了新標準,可以使用 #pragma 編譯器指令指定。

除了已有的 __line__ __file__ 以外,增加了 __func__ 得到當前的函式名。

允許編譯器化簡非常數的表示式。

修改了 /% 處理負數時的定義,這樣可以給出明確的結果,例如在c89中-22 / 7 = -3, -22% 7 = -1,也可以-22 / 7= -4, -22% 7 = 6。 而c99中明確為 -22 / 7 = -3, -22% 7 = -1,只有一種結果。

取消了函式返回型別預設為 int 的規定。

允許 struct 定義的最後乙個陣列不指定其長度,寫做 (flexible array member)。

const const int i 將被當作 const int i 處理。

增加和修改了一些標準標頭檔案,比如定義 bool 的 ,定義一些標準長度的 int 的 ,定義複數的 ,定義寬字元的 ,類似於泛型的數學函式 , 浮點數相關的 。 在增加了 va_copy 用於複製 ... 的引數。

裡增加了 struct tmx ,對 struct tm 做了擴充套件。

輸入輸出對寬字元以及長整數等做了相應的支援。

gcc和其它一些商業編譯器支援c99的大部分特性。

c11標準

2023年12月8日,國際標準化組織(iso)和國際電工委員會(iec)再次發布了c語言的新標準,名叫iso/iec 9899:2011 - information technology -- programming languages -- c [9]  ,簡稱c11標準,原名c1x。這是c語言的第三個官方標準,也是c語言的最新標準。

新的標準提高了對c++的相容性,並增加了一些新的特性。這些新特性包括:

對齊處理(alignment)的標準化(包括_alignas標誌符,alignof運算子, aligned_alloc函式以及標頭檔案。

_noreturn 函式標記,類似於 gcc 的 __attribute__((noreturn))。

_generic 關鍵字。

多執行緒(multithreading)支援,包括:

_thread_local儲存型別識別符號,標頭檔案,裡面包含了執行緒的建立和管理函式。

_atomic型別修飾符和標頭檔案。

增強的unicode的支援。基於c unicode技術報告iso/iec tr 19769:2004,增強了對unicode的支援。

包括為utf-16/utf-32編碼增加了char16_t和char32_t資料型別,提供了包含unicode字串轉換函式的標頭檔案.

刪除了 gets() 函式,使用乙個新的更安全的函式gets_s()替代。

增加了邊界檢查函式介面,定義了新的安全的函式,例如 fopen_s(),strcat_s() 等等。

增加了更多浮點處理巨集。

匿名結構體/聯合體支援。這個在gcc早已存在,c11將其引入標準。

靜態斷言(static assertions),_static_assert(),在解釋 #if 和 #error 之後被處理。

新的 fopen() 模式,(「…x」)。類似 posix 中的 o_creat|o_excl,在檔案鎖中比較常用。

新增 quick_exit() 函式作為第三種終止程式的方式。當 exit()失敗時可以做最少的清理工作。

用c語言寫程式求n的階乘要求用到陣列

現在字數限制在100字以內了,根本就不夠用.我沒法在這上面回答你的問題.咱們私聊好了.首先明確一點,大數的階乘位數都很大,一般超過了long的位數,所以光用迴圈是不夠的。我給你發了訊息,希望有幫助 int i,n,w 10 printf 請輸入n scanf d n w 1 1 for i 1 i ...

c語言n和n的區別求大神講解,C語言 n 和 n的區別,求大神講解。

元子童通亮 寫個 測試一下 intmain void int n a n printf d,n n printf d n getch return0 輸出結果是4,5 所以,n 是指標n加1 n 表示n指向的內容加1 c語言裡,n 和 n單目運算有什麼區別麼?老師說的當時懂,後來又忘了 請高手指點!...

C語言求1到10的階乘的和

帥傅香漢戌 程式輸出結果是對的,但是,getch 這句給改一下,getchar 就對了啊,但是我不知道你加這個是說明意思,完全沒有必要的啊。可用不要這句就是的啊。程式就是對的了。輸出結果也是對的。為了驗證,你可以把10改為4,一個小的資料,然後運算驗證一下就可以了。 福清竹普鶯 你試試把for後的兩...