1樓:改芹中
解決了嗎,我也是這樣。下面的**看不懂。
為什麼我的程式,在devc++上可以執行,但在vs2017上執行結果不一樣,也沒報錯。
2樓:gta小雞
如果你的程式在不同的編譯器上執行結果不一樣,那說明你的**中存在未定義行為。
求c++高手:下面程式執行時輸入比較大的數會出現異常,如輸入123456789,為什麼?如何能求出精確值?
3樓:
在計算機中,所有的資料型別的表示範圍都是有限的,這個題是求階乘,當輸入123456789,求的是123456789有階乘123456789!,這是個無法想象有多大的數,變數p裝不下了。
4樓:網友
溢位了,自己實現乙個大數結構,實現它的乘法操作。
5樓:網友
1000的階乘已經就是10的2500多次方了,123456789的階乘結果是多少位呀?那麼大的數,用什麼能存下呢,呵呵就算設計乙個大數浮點結構,也得計算上半天了。
c++,求n個數的階乘和,程式執行不了。。。
6樓:網友
思路是對的!但是sunfac函式你犯錯了。
1.類似sunfac(n)=sunfac(i); //不能給函式賦值。只能給變數賦值。
函式思路是對的。求和的過程是不需要遞迴的。其實直接寫就行。比如改成這個樣子。
int sunfac(int n)
return sunfac(n);
int isum = 0 ; //弄個求和的臨時變數。
for(int i = 1;i <= n ;i++)//從1一直增加到n.
return isum;
這個問題這麼改就行了。
追加問題:變數是int型別的,所以其肯定會有乙個最大範圍。這個最大範圍是多少?
2.知道isum的範圍後,按照這個思路,求出輸入整數n的最大值。
3.既然n已經有最大值了,那麼如果輸入比最大值大的數程式就會出錯,應該怎麼限制一下?
型別int 用另乙個型別替換一下使其範圍變大。
5.將來你再看這題時,能否適當的寫乙個「類」,替換int 型別。來使得階乘的範圍進一步擴大。(*這個題先不用考慮,現在不是時機)。
7樓:網友
還是把**貼上來吧,看不清楚。
求n! 編寫乙個c語言程式,不要c++,可以求乙個大數n的階乘(n!),n的值範圍從1~100之間變化。
8樓:南見雪
#include
#define max 1001 //1001表示這個大數n的階層結果最多隻能是1000位,注意 下面的程式是從a[1]開始存數。
using namespace std;
計算n的階乘。
int jisuan(int n,int a)while(carry>0) //計算一輪後,還得檢驗carry的值,如果carry不為0 ,繼續進位。
digit=j-1; //計算一輪後,將當前的位數賦給digit}return digit;
按格式輸出n的階乘。
void shuchu(int digit2,int a)cout<>n;
int a[max];
int digit=jisuan(n,a);
cout<<"***n";
cout這個絕對可用且很好,老師驗收過的。
9樓:新新
樓上的都只能算到17就溢位了,別人已經研究的很透徹了看下面文章:
c++求n的階乘!
10樓:理陽波
以下為c++求階乘的四種方法,需要注意的是,各個**只是提供了求階乘的思路,以便在實際需要時再來編碼,各個程式都在1到10內測試正確。
1、該程式在每次輸入n時,都會呼叫fac()來暴力計算以得到結果:
2、該程式利用了陣列記錄已得到的結果,並在計算下乙個結果時利用了已得到的結果。
3、應該說該**實用性最差,主要是來學習靜態區域性變數來了。
4、此**較不常用,思路比較新奇,但可以嘗試。
11樓:網友
c++求n的階乘**如下:
#include
using namespace std;
int fac(int);
int main()
int n;
while(cin>>n)
coutint fac(int x)
register int i,f=1; //定義暫存器變數for(i=1;i<=x;i++)
f*=i;return f;
12樓:匿名使用者
int factorial(int n)
while(carry)//如果有進位 }printf("結果是:%d ! = ",n);//顯示結果for(i = digit; i >=1; -i)return 0;}
13樓:磨曠方旭堯
這要看看printf這個函式是如何使用的。
printf("1~20!階乘之和sum=%d",sum);
這個函式是輸出的意思。
引號前面的都是直接輸出的意思,「1~20!階乘之和sum=」%d表示在這裡要輸出乙個整數,整數的值在引號外面給出(這裡是後面的sum),表示輸出乙個換行符,這樣在你輸出這一行之後相當於又輸出了個回車。
14樓:王姝邱綺露
我就簡單寫個吧;
intn=5;
比如求5的階乘。
intresult=1;
for(int
i=1;i<=n;
i++)/迴圈完成後,result就是結果。
樓上用的是遞迴的方法。初入門的話,可能看起來有點難度。
呵呵,慢慢來吧,學c++,一定要回遞迴的。
15樓:匿名使用者
for (;
的階乘值為", num, jc);
你是否還需要使用此階乘計算器,1-是,2-否");
int numb = ;
if (numb == 1)
if (numb == 2)};
c++求階乘的程式
16樓:你不知道的細節
if (b<=n+1)
這裡的if語句出現問題;
if語句執行時到b++;a=b時就結束了;
並不會迴圈執行;
所以你的結果會是一直是2;
你應該用for迴圈語句;
17樓:網友
因為你用的是if(b<=n+1),只會執行一次,而且邏輯也有問題;
你可以試試。
if (b<=n+1)
替換成:while(a<=n)
18樓:網友
既然是階乘,最簡單的就用迴圈噻。
#include
using namespace std;
void main()
cout< 19樓:禾土 if是判斷語句,不是迴圈。 可以覆在需要停止的地方加制入 keyboard 那麼程式執行到這個地方時 會中斷,命令提示符會由 變為k 此時,你可以在k 後輸入變數名或者修改變數的值。如果想繼續執行 可以按f5鍵。如果想退出除錯,可以在k 後輸入 dbquita 10 keyboard 在k 後輸入 a 20 不要雙引號 再按 ... vb已不再支援read data語句了 可直接用賦值語句 read n,m,h read x 0 ip for i 0 to m 1 read y 0,i next i data 50,5,0.5 data 0 10 data 1 0 0 0 0 n 50 m 5 h 0.5x 0 0 ip 10 ... g41或者g42都是刀具直徑補正的命令,單段執行在裝置操作面板上肯定有一個按鍵的。我有一臺數控立式加工中心,使用的是fanuc oimc的系統,在自動執行程式時,單節執行按鈕突然執行,導致程式 單節執行按鈕突然執行,沒有太大問題,再按 迴圈啟動 按鈕,就接著繼續執行。如果是單節按鈕壞了,重新換一個就...matlab調式程式執行時間長除錯時希望從指定
VB程式照著書上打下來的,執行時始終程式不對,求大神修改,萬分感謝!!急用
加工中心程式在自動執行時,怎麼進行刀補?還有怎麼運用單節執行