English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

N! 要怎麼打用 DEV C的程式(當我輸入50,出來就是50!)
剛學起步而已,老師就出這個題目
陷入苦思阿

2006-07-25 08:58:59 · 3 個解答 · 發問者 朋友 1 in 電腦與網際網路 程式設計

3 個解答

32 位元的無號整數最大值,只能計算出 12 ! 階層值,計算到 13 ! 值就是溢位!

如果要算很大的數值,必須用演算法和陣列加以計算。
大數演算法參考網址:(良葛格學習筆記)
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/BigNumber.htm

//Power by Microsoft Visual Studio 2005
//可以使用 Dev-C++ 編譯此程式
#include
#include
int main(int argc, char *argv[])
{
//=====START=====//
int nNUM=0;
unsigned int factorial(int NUMBER);
//printf("Factorial\nInput Number: ");
//scanf("%d",&nNUM);
while(nNUM<14){
printf(" %2d Factorial: %d\n",nNUM,factorial(nNUM));
nNUM++;
}
printf("real 13 Factorial: 6227020800 <= Correct Value\n");
//=====END=====//
system("PAUSE");
return 0;
}
unsigned int factorial(int NUMBER){//遞迴演算
if(NUMBER==0){
return 1;
}else{
return NUMBER*factorial(NUMBER-1);
}
}

2006-07-25 10:28:44 · answer #1 · answered by Big_John-tw 7 · 0 0

如果你是要顯示"50!"
直接打
printf("50!");
就好啦XD
如果是要50!的答案
那打
int i=1,n,sum=1;
scanf("%d",&n);
while(i<=n)
{
i=i+1;
sum=sum*i;
}
printf("%d! 的答案是%d,&n,sum");
理論上是這樣
其中有沒有小錯我就不清楚了...

2006-07-25 09:36:05 · answer #2 · answered by ? 2 · 0 0

#include
#include

int main()
{
long sum=1,num;
printf("請輸入一個數字:");
scanf("%d",&num);
while (num>=1)
{
sum=sum*num--;
}
printf("這個數字的階層是%d\n",sum);
system("pause");
return 0;
}

不知道符不符合您的要求??
(P.S : 50的階層太大無法正確的印出 )

2006-07-25 09:31:03 · answer #3 · answered by 國徹 1 · 0 0

fedest.com, questions and answers