本文目錄一覽:
任意輸入一個數,求其階乘並輸出
用科學計算器就可以,比如12 [n!] 即顯示479001600。
#includestdio.h
int main()
{
int i,n;
double temp;
while(1)
{
scanf(“%d”,n);
temp =1;
if(n0){printf(“error”);return 0;}
if(n==0||n==1);
else{
for(i=1;i=n;i++)
temp*=i;
}
printf(“%.f\n”,temp);
}
}
擴展資料:
通常我們所說的階乘是定義在自然數範圍里的(大多科學計算器只能計算 0~69 的階乘),小數科學計算器沒有階乘功能,如 0.5!,0.65!,0.777!都是錯誤的。但是,有時候會將Gamma 函數定義為非整數的階乘,因為當 x 是正整數 n 的時候,Gamma 函數的值是 n-1 的階乘。
參考資料來源:百度百科-n!
怎樣用C++求12以上的階乘
我覺得即便是long也不能解決你的問題,這個要用到高精度來解決。所謂高精度,簡單來說就是把你的結果折成幾段存於一個數組中,並且在計算的時候維護數組的變化。
這個要克服的問題主要是你的數據類型(不管是long還是int等等)都是有限長度的,無法表示超出這個長度的數。你要做的就是模擬計算機維護數據,處理好相乘、進位等等操作。
俺也沒實際寫過這類的程序,主要就是因為處理的數據通常沒那麼大。你可以自己試試吧,這個貌似應該不是很難。
C語言求階乘
其實這個只能算到12的階乘,因為13的階乘等於6227020800,它已經大於2的31次方了,也就是超過了int所能表示的最大值了(溢出),所以你可以把int
改為double.
#include
stdio.h
#include
stdlib.h
double
f(int
n)
{
if(n==0||n==1)
return
1;
return
n*f(n-1);
}
int
main()
{
int
n,k,i;
printf(“請輸入一個數:”);
scanf(“%d”,k);
for(i=1;i=k;i++)
{
printf(“第%d個數為:”,i);
scanf(“%d”,n);
printf(“%d!=%f\n”,n,f(n));
}
}
我把你寫的稍微改了一下,你看看。
C語言中階乘怎麼輸?
1、不是直接輸入n!,需要一定的演算法才可以實現。具體方法是,首先打開編輯器,準備好空白的C語言文件:
2、在編輯器中輸入代碼,這裡所謂 n 的階乘,就是從 1 開始乘以比前一個數大 1 的數,一直乘到 n。C語言中可利用循環解決,可以假設循環變數為 i,初值為 1,i 從 1 變化到 n;依次讓 i 與 sum 相乘,並將乘積賦給 sum,最後輸出sum的值就可以了:
3、在編輯器中運行程序,隨意輸入一個數,按下回車鍵,即可列印出階乘的結果來:
c語言如何求一個數的階乘
n的階乘就是從1到的累積,所以可以通過一個for循環,從1到n依次求積即可。
參考代碼:
#include “stdio.h”
int main() {
int n,i,s=1;
scanf(“%d”,n);
for(i=1;i=n;i++)//for循環求累積
s=s*i;
printf(“%d\n”,s);
return 0;
}
/*
運行結果:(例如求5的階乘)
5
120
*/
擴展資料:
return用法:
return返回一個數值的意思就是把return表達式後面表達式的值返回給調用他的函數。舉個例子:
int sum(int i,int j)
{
return i+j;
printf(“這個語句不會被執行,因為該子函數執行到上面的return語句就無條件結束了”);
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf(“%d”,c);
}
原創文章,作者:QPMHB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330534.html