c語言,用函數求階乘

首先你的p沒有初始值1,且是int型,所以返回的並不是long型,scanf裡面不能加

#include<stdio.h>
longfact(intn)
{
inti;longp=1;
if(n>0)//這里添加判斷以免出現小於1的現象
for(i=1;i<=n;i++)
p=p*i;
else printf("程序出錯!k必須大於r!");
returnp;
}

intmain()
{
intk,r;
printf("輸入k,r: ");
scanf("%d%d",&k,&r);
printf("r=%d,k=%d",k,r);
doubles;
s=fact(k)/(fact(r)*fact(k-r));//若k-r<1,會出錯
printf(" C(%d,%d)=%lf ",k,r,s);
}

❷ c語言求階乘的函數

f是fac()函數內部的靜態復變數,那麼,制f只在第一次進入fac()函數時才執行其初始化操作,以後都會跳過初始化操作。所以第一次執行fac(1)函數時,f初始化為1,並乘以1,f仍為1;第二次執行fac(2)時,跳過初始化操作,f=f*2,f為2;第三次執行fac(3)時,跳過初始化操作,f=f*3,f為6;第四次執行fac(4)時,跳過初始化操作,f=f*4,f為24;......以此類推。

❸ C語言中如何編寫N的階乘

1、打開visual C++軟體,新建任務,滑鼠左鍵點擊文件,選擇C++ source file:

❹ c語言 編程實現求n!要求用定義求階乘的函數

1、打開vs2017軟體,新建c語言的工程,首先開頭引入頭文件,然後調用先調用一下求階版乘的函數和權空的主函數,最下方定義prime函數用來求階乘:

❺ c語言用函數求n的階乘的和

法/步驟

第一步、編程的第一步就是寫頭文件,對於初學者來說,只寫一個頭文件就可以了,即#include<stdio.h>

拓展資料

定義

n!=1×2×3...xn

n!=X×(X-1)×(X-2)...×1

1751年,歐拉以大寫字母M表示m階乘M=1x2x3...x...m

1799年,魯非尼在他出版的方程論著述中,則以小寫字母π表示m階乘。而在1813年,高斯則以Π(n)來表示n階乘。而用來表示n階乘的方法起源於英國,但仍未能確定始創人是誰。直至1827年,由於雅萊特的建議而得到流行,現在有時也會以這個符號作為階乘符號。

當n較大時,直接計算n!變得不可能,這時可通過斯特靈(Stirling)公式計算近似算或取得大小范圍。

❻ c語言求階乘函數!

函數的調用少了參數,和函數定義的模型不一樣。而且我覺得你最好把函數定義放main前面,或者在main前面寫個函數聲明。

❼ c語言求階乘函數

你好,C語言中默認的只有long
int
short的整數類型,如果數過大最好使用double,
或則使用第三方大整數運算專(可以去網上屬網路下代碼),請注意數據如果太大最好用double
希望能幫到你!望點贊!

❽ C語言階乘函數

你的函數原型是這個int jiecheng(int a);調用的卻是 s=jiecheng(); 沒有傳參進去,所以報錯,應該改為:
int s;
int result;
scanf("%d",&s);
result=jiecheng(s);
另外,還要做一個特殊處理,比如:當參數為零時,輸出為1;當參數為-1時,輸出0;當為負數時,提示不正確

❾ c語言階乘函數

#include<stdio.h>

#defineMAX20

intmain(void)

{

inti,n;

intrepeat,ri;

doublesum[MAX]={0};

doublefact(intn);

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&n);

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

sum[ri-1]+=fact(i);

//printf("sum=%.0f ",sum);

}

for(i=0;i<repeat;i++){

printf("sum=%.0f ",sum[i]);

}

return0;

}

doublefact(intn){

if(n==0)

return1;

returnn*fact(n-1);

}

❿ C語言中階乘怎麼輸

1、不抄是直接輸入n!,需要一定的算襲法才可以實現。具體方法是,首先打開編輯器,准備好空白的C語言文件: