求N的階乘的最高位數用c或c,c語言 求階乘的最高位數

2022-11-27 08:36:31 字數 4089 閱讀 6221

1樓:匿名使用者

你問的什麼啊?

不是求n的階乘啊,是求n的階乘的最高位數?理論上哪有最高位數?你們老師yy了吧

在c或c++中你階乘一上去變數就會溢位,你的意思是問臨界溢位的時候這個階乘的最高位數嗎?

那你去看你的機器位數和c版本不就得了。

2樓:匿名使用者

int n;

int a=1;

char buf[9];//可以自己設定

scanf("%d",&n);

for (int i=1;i<=n;i++)sprintf(buf,"%d",a);//整數與字元轉換printf("%c\n",buf[0]);//列印最高位值printf("%d\n",a);//n階層的值

c語言 求階乘的最高位數 5

3樓:木有想到

while(s/10)

printf("%d", s);

算出來n!後的s,用以上**就能出來最高位數了,請採納,謝謝

4樓:聽不清啊

這個n最大是多少?

#include

int main()

for(;s>1000000;)s/=10;

x=(long)s;

while(x>10)x/=10;

printf("%ld\n",x);

system("pause");

return 0;}

如何求n階乘的最高位,求大牛啊,最好能具體點,謝啦,呵呵~ 注:n不大於100萬。求演算法或c++程式。

5樓:御含靈

設n!=x.yzzyz*10^k

x=1~9

取以10為底的對數

log(n!)=k+log(x.yzzyz)

可見x.yzzyz=10^( log(n!)-(int)log(n!));

x=(int)(10^( log(n!)-(int)log(n!)));

log(n!)=log(1)+....+.....+log(n)

也就是說先計算以10為底的log(n!)

算好了求得它的整數部分(int) log(n!)

然後獲得小數部分( log(n!)-(int)log(n!))

然後求10的方冪 pow(10,( log(n!)-(int)log(n!)));

然後取整就得到了(int)pow(10,( log(n!)-(int)log(n!)));

6樓:匿名使用者

int fac(unsigned n)

int main()

修改演算法了。。。

c++求n的階乘!

7樓:理陽波

以下為c++求階乘的四種方法,需要注意的是,各個**只是提供了求階乘的思路,以便在實際需要時再來編碼,各個程式都在1到10內測試正確。

1、該程式在每次輸入n時,都會呼叫fac()來暴力計算以得到結果:

2、該程式利用了陣列記錄已得到的結果,並在計算下一個結果時利用了已得到的結果。

3、應該說該**實用性最差,主要是來學習靜態區域性變數來了。

4、此**較不常用,思路比較新奇,但可以嘗試。

擴充套件資料執行程式後,1-10的結果如下,可供檢驗:

1、當i為:1時階乘值為:1

2、當i為:1時階乘值相加為:1

3、當i為:2時階乘值為:2

4、當i為:2時階乘值相加為:3

5、當i為:3時階乘值為:6

6、當i為:3時階乘值相加為:9

7、當i為:4時階乘值為:24

8、當i為:4時階乘值相加為:33

9、當i為:5時階乘值為:120

10、當i為:5時階乘值相加為:153

11、當i為:6時階乘值為:720

12、當i為:6時階乘值相加為:873

13、當i為:7時階乘值為:5040

14、當i為:7時階乘值相加為:5913

15、當i為:8時階乘值為:40320

16、當i為:8時階乘值相加為:4623317、當i為:9時階乘值為:362880

18、當i為:9時階乘值相加為:40911319、當i為:10時階乘值為:362880020、當i為:10時階乘值相加為:4037913

8樓:

c++求n的階乘**如下:

#include

using namespace std;

int fac(int);

int main()

int n;

while(cin>>n)

cout

int fac(int x)

register int i,f=1;  //定義暫存器變數for(i=1;i<=x;i++)

f*=i;

return f;

9樓:匿名使用者

int factorial(int n)

while(carry)//如果有進位 }printf("結果是:\n%d ! = ",n);//顯示結果for(i = digit; i >=1; --i)return 0;}

10樓:磨曠方旭堯

這要看看printf這個函式是如何使用的

printf("1~20!階乘之和sum=%d\n",sum);

這個函式是輸出的意思

引號前面的都是直接輸出的意思,「1~20!階乘之和sum=」%d表示在這裡要輸出一個整數,整數的值在引號外面給出(這裡是後面的sum),\n表示輸出一個換行符,這樣在你輸出這一行之後相當於又輸出了個回車

11樓:王姝邱綺露

我就簡單寫個吧;

intn=5;

//比如求5的階乘

intresult=1;

for(int

i=1;

i<=n;

i++)

//迴圈完成後,result就是結果

樓上用的是遞迴的方法。初入門的話,可能看起來有點難度。

呵呵,慢慢來吧,學c++,一定要回遞迴的。

12樓:匿名使用者

for (;;)

console.writeline("的階乘值為", num, jc);

console.writeline("你是否還需要使用此階乘計算器,1-是,2-否");

int numb = int.parse(console.readline());

if (numb == 1)

if (numb == 2)

}console.readkey();

13樓:匿名使用者

#include

using namespace std;

int main()

cout << n << " 的階乘為:"<< " = " << factorial;

return 0;}

14樓:匿名使用者

#include

using namespace std;

long long f(long long n)else

}int main()

c++程式設計:求n的階乘

15樓:

可能是因為12的階乘太大了吧,超出了int 型資料的表示範圍。可以改用unsigned long型別試一下。

如果想求更大的數的階乘,則就不可以 了,這時可以應採用陣列儲存一個大的整數。這樣就可以解決很大的數的階乘問題。

16樓:匿名使用者

13!已經超過整形限制範圍,要用高精度演算法才能對

17樓:匿名使用者

int 整數型別只有 32767 負32767

long 的比較大

18樓:

把變數的資料型別都改成long long型的(c++/cli中),如果演算法沒問題,一定能行

用c 語言求n的階乘,用c 語言求n的階乘

1 開啟vs6.0軟體,準抄備一個後襲綴為cpp的檔案,在c 檔案中首先寫入標頭檔案,定義一個處理階乘的函式,接著寫一個空的main函式 2 接著是階乘recv函式邏輯,該函式有一個形參n用來接收輸入的數。n的階乘是所有正整數的乘積,這裡的處理是sum不斷的用遞迴的方法乘以recv函式的輸入數,每次...

c語言怎麼用遞迴呼叫函式的方法求n的階乘

1 開啟vc6.0軟體bai,新建 一個duc語言的專案 2 接zhi下來編寫主程dao序,首先定義內用來求階乘的遞容歸函式以及主函式。在main函式裡定義變數sum求和,呼叫遞迴函式fact 並將返回值賦予sum,最後使用printf列印sum的結果,主程式就編寫完了 3 最後執行程式,觀察輸出的...

用c語言輸出n的階乘,執行結果不對,幫忙改下謝謝

include int main printf d n sum return 0 改為 include int main printf d n sum return 0 int i 0 int j 0 int n 0 int sum 0 新增變數初始化,再試試 再說階乘的演算法也不正確n!n n 1...