1樓:會飛的小兔子
#include
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語言函式的呼叫
函式定義好以後,要被其它函式呼叫了才能被執行。c語言的函式是能相互呼叫的,但在呼叫函式前,必須對函式的型別進行說明,就算是標準庫函式也不例外。
標準庫函式的說明會被按功能分別寫在不一樣的標頭檔案中,使用時只要在檔案最前面用#include預處理語句引入相應的標頭檔案。如前面使用的printf函式的說明是放在檔名為stdio.h的標頭檔案中。
2樓:天雲一號
沒有,自己編一個就是
double fun(int n)
3樓:
我給你提供兩種解決方案:
第一,以函式的形式寫到程式裡,可以直接呼叫,但不能跨程式。
#include
int jc(_int64 n)
void main()
第二種,把階乘函式儲存成標頭檔案的形式,可以跨函式呼叫。
4樓:我真的得回家
#include"stdio.h"
main()
int jc(int t)//呼叫函式
return(sum);
}純手打,陽光提供哦
c語言 程式設計實現求n!要求用定義求階乘的函式
5樓:飛喵某
1、開啟vs2017軟體,新建c語言的工程,首先開頭引入標頭檔案,然後呼叫先呼叫一下求階乘的函式和空的主函式,最下方定義prime函式用來求階乘:
2、主函式中用scanf函式接受使用者輸入的的數字,接著將輸入的數傳入處理階乘的函式中完成計算,最後輸出列印結果。prime函式有一個引數,首先判斷是否為正數,然後用prime函式自身乘以引數s,最後返回值即可完成:
3、將程式編譯執行,彈出視窗輸入任意的數,計算階乘;這裡輸入7,得到結果是5040。以上就是c語言求階乘的方法:
6樓:文化廚子
#include
long fac(unsigned n)
else
}int main()
注意:0的階乘是1,不是0,因為階乘表示的是全排列,是從n箇中取出n個的所有的取法總數。所以當n==0或者n==1時返回1。
7樓:匿名使用者
本人小白,多多指教
#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)
8樓:匿名使用者
計算階乘的c#**:
for (;;)
console.writeline("的階乘值為", num, jc);
console.writeline("你是否還需要使用此階乘計算器,1-是,2-否");
int numb = int.parse(console.readline());
if (numb == 1)
if (numb == 2)
}console.readkey();
9樓:匿名使用者
long fact(long n)
}void main()
10樓:童末
#include
#include
using namespace std;
int main()cout<
return 0;}
誰幫我看看這個c語言程式**有錯誤?題目:用遞迴呼叫編寫計算階乘n!的函式fact()。 求n!
11樓:匿名使用者
fact(int n)
c語言中的main函式引數作用,C語言中的main函式引數作用
在呼叫可執行程式時,可以通過main函式的引數將命令列的呼叫引數傳遞給main函式。事實上,main 函式既可以是無參函式,也可以是有參的函式。對於有參的形式來說,就需要向其傳遞引數。從函式引數的形式上看,包含一個整型和一個指向字元指標的指標。當一個c的源程式經過編譯 連結後,會生成副檔名為.exe...
c語言的開方函式,c語言中怎麼開根號?
c語言的開方函式是 sqrt 函式。1 功能 計算一個非負實數的平方根。2 函式原型 在vc6.0中的math.h標頭檔案的函式原型為double sqrt double 3 說明 sqrt系square root calculations 平方根計算 通過這種運算可以考驗cpu的浮點能力。4 標頭...
C語言中,函式名代表函式的入口地址嗎求大神!求解析
如果在程式中定義了一個函式,在編譯時會把函式的源 轉換為可執行 並分配一段儲存空間。這段記憶體空間有一個起始地址,也稱為函式的入口地址。函式名代表函式的起始地址。呼叫函式時,從函式名得到函式的起始地址,並執行函式 摘自 c程式設計 第五版 譚浩強,p265頁。函式是c程式的 塊,當函式被呼叫執行時作...