fac在C語言中沒有特別的含義,既不是關鍵字也不是庫函數,可能是編程人員自定義的一個變量名或函數名等。
創(chuàng)新互聯公司從2013年開始,先為東營區(qū)等服務建站,東營區(qū)等地企業(yè),進行企業(yè)商務咨詢服務。為東營區(qū)企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
通常用fac來表示求階乘的函數名,fac是階乘英文(factorial)的前三個字母。
下面定義一個函數名為fac的階乘函數:
double?fac(int?n)
{
if(n==0?||?n==1)??//?0和1的階乘都為1
return?1;
if(n1)
return?n*fac(n-1);??//?n的階乘等于n乘以(n-1)的階乘
}
你的函數原型是這個int jiecheng(int a);調用的卻是 s=jiecheng(); 沒有傳參進去,所以報錯,應該改為:
int s;
int result;
scanf("%d",s);
result=jiecheng(s);
另外,還要做一個特殊處理,比如:當參數為零時,輸出為1;當參數為-1時,輸出0;當為負數時,提示不正確
#include?stdio.h
#define?MAX?20
int?main(void)
{
int?i,n;
int?repeat,?ri;
double?sum[MAX]?=?{0};
double?fact(int?n);
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\n",?sum);
}
for(i=0;?irepeat;?i++)?{
printf("sum?=?%.0f\n",?sum[i]);
}
return?0;
}
double?fact(int?n)?{
if(n?==?0)
return?1;
return?n?*?fact(n?-?1);
}
f是fac()函數內部的靜態(tài)變量,那么,f只在第一次進入fac()函數時才執(zhí)行其初始化操作,以后都會跳過初始化操作。所以第一次執(zhí)行fac(1)函數時,f初始化為1,并乘以1,f仍為1;第二次執(zhí)行fac(2)時,跳過初始化操作,f=f*2,f為2;第三次執(zhí)行fac(3)時,跳過初始化操作,f=f*3,f為6;第四次執(zhí)行fac(4)時,跳過初始化操作,f=f*4,f為24;......以此類推。
#includestdio.h
voidmain(){
intn,result;
printf("請輸入一個數字,求它的階乘:");
scanf("%d",n);
result=calc(n);
printf("結果:%d",result);
}
intcalc(intn){
intresult=1,i;
for(i=n;i=1;i--)
result=result*i;
returnresult;
}
擴展資料
C語言函數的調用
函數定義好以后,要被其它函數調用了才能被執(zhí)行。C語言的函數是能相互調用的,但在調用函數前,必須對函數的類型進行說明,就算是標準庫函數也不例外。
標準庫函數的說明會被按功能分別寫在不一樣的頭文件中,使用時只要在文件最前面用#include預處理語句引入相應的頭文件。如前面使用的printf函數的說明是放在文件名為stdio.h的頭文件中。