#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a; double n; double s = 0; double b = 1;
for (a = 1; a <=20; a++)//a由1增加到20
{
for (n = 1; n <=a; n++)//計算a!=b
b = b*n;
}
s = s + b;
cout << setiosflags(ios::fixed)<<s;
system("pause");
}
計算1!+2!+3!+。。。+20!
uj5u.com熱心網友回復:
將double改成int試試。uj5u.com熱心網友回復:
s = s + b; 應該放在外層的for回圈里。double可以改成unsigned long或者unsigned long long,應該夠。
不過演算法效率不高,比如 20! == 20*(19!),下一個數階層的計算可以利用前一個數階層的結果。
uj5u.com熱心網友回復:
還有b每次要賦初值。uj5u.com熱心網友回復:
s=s+b 應該放在第一層回圈體內,你把它放在外面了,放外面的話b就不是n的階乘了。而是20的階乘。uj5u.com熱心網友回復:
樓上的各位已經解釋的很清楚了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/50663.html
標籤:基礎類
上一篇:我C語言新手,請問各位為什么沒有輸出我要的和300,這代碼有什么問題
下一篇:如何卸載IE8?
