發問時間: 電腦與網際網路程式設計 · 1 0 年前

c 高手請進,20點

寫一個程式計算

N

Σi = M + 2 + 3+ …+ N

i=M

( Recursive method遞迴方法實現; 必須警告N值小於M,以及累加發生溢位時,必須發出錯誤警示)

尤於不好打出來,所以在 Σ 的上是N、右是i、下是i=M

希望看的懂....

已更新項目:

Σ

因為word打的出來,所以...

那個是一個類似E的

N

Ei=M 2 3 ... N

i=m

2 個已更新項目:

N

Ei=M 2 3 ... N

i=m

3 個已更新項目:

N

Ei=M 2 3 ... N

i=m

加號一直打不出來......

4 個已更新項目:

N

Ei=M+ 2+ 3+ ...+ N

i=m

5 個已更新項目:

那判斷溢位的地方整段只要寫

if(sum<0) over=1; //

是指

// printf("m,n,sum=%d,%d,%dn",m,n,sum); //要看過程的話可以加這行..

.

.

.

over=1; //從負數加到負數,答案一定是負數,若是正數則為溢位

這段嗎

6 個已更新項目:

程我用dev-C 開啟後,出現 system("pause"); 錯誤

下面是錯誤訊息

In function `int main()':

18 `system' undeclared (first use this function)

(Each undeclared identifier is reported only once for each function it appears in.)

In function `int SUM(int, int)':

7 個已更新項目:

27 `system' undeclared (first use this function)

28 `exit' undeclared (first use this function)

28 At global scope:

52 expected unqualified-id before "return"

52 expected `,' or `;' before "return"

53 expected declaration before '}' token

1 個解答

評分
  • Sara
    Lv 5
    1 0 年前
    最佳解答

    有規定M或N可能小於0嗎?若m和n都是正整數的話,sum<0就是溢位了

    現在寫的大概每個值都可以算.

    只是算太大的數字的話好像會直接跳出..不知道為什麼 @﹏@

    不知道是不是記憶體太小..不夠讓遞迴存數值..

    #include<stdio.h>

    int SUM(int m,int n);

    int main()

    {

    int M,N,sum;

    printf("Enter M,N:");

    scanf("%d%d",&M,&N);

    printf("Ans=%d\n",SUM(M,N));

    system("pause");

    return 0;

    }

    int SUM(int m,int n)

    {

    int sum,over=0;

    if(n<m){

    printf("N<M!無法計算..\n");

    system("pause");

    exit(0);

    }

    if(m<n)

    sum=m+SUM(m+1,n);

    else

    sum=n;

    // printf("m,n,sum=%d,%d,%d\n",m,n,sum); //要看過程的話可以加這行..

    if(n>=0 && m>=0 && sum<0)

    over=1; //從正數加到正數,答案一定是正數,若是負數則為溢位

    else if(n>=0 && m<0 && -m>n && sum>0)

    over=1; //負數加到正數,若負數較小,則答案是正數,若是負數則為溢位

    else if(n>=0 && m<0 && -m<=n && sum<0)

    over=1; //同上,若負數較大,則答案是負數,若是正數則為溢位

    else if(n<0 && m<0 && sum>0)

    over=1; //從負數加到負數,答案一定是負數,若是正數則為溢位

    if(over==1){

    printf("累加發生溢位!結束程式\n");

    system("pause");

    exit(0);

    }//這裡本來想寫if{印出發生溢位},else{return sum} 的

    //不過這樣好像可以算的數會變得比較少..

    //輸入的數太大,還沒發生溢位就會變成直接跳出了..

    return sum;

    }

    2006-12-13 13:49:30 補充:

    所以看你這樣寫應該都是從正整數開始加吧?

    那判斷溢位的地方整段只要寫

    if(sum<0) over=1; //←就好了

    我寫的應該和你要的一樣吧 @_@ 有問題再說

    N

    Σ =M+2+3+...+N

    i=M

    2006-12-14 00:26:26 補充:

    錯誤得真奇怪....main裡面的system("pause"); 怎麼會錯呀 @﹏@

    我也是用dev-c++呀...編譯就沒錯 @_@

    不然...#include<stdlib.h>看看吧..之前的人說system();要加這個..

    不過我沒加,編譯執行也是可以..不知道什麼原因 @﹏@

    又試了一下...好像是存成.cpp就會那樣…

    我是存成.c編譯的..所以沒問題...

    2006-12-14 00:27:24 補充:

    有問題的話寄信或加我的即時通問吧...不一定會回來看 @﹏@

還有問題?馬上發問,尋求解答。