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

哪錯了囧沒bug囧

#include <iostream.h>

#include <stdlib.h>

#include <stdio.h>

int get_sum(int n)

{

int i,j;

int s=0;

float tmp,p,q,r;

tmp=(1 r);

for(int i=1;i<=n;i )

{

j=1;

for (int j=1;j<=i;j )

{

q=tmp*j ;

}

s=p*q;

}

return s;

}

//-----------------------//

void main(void)

{

float p,r;

int s,n;

printf("輸入本金: ");

scanf(" %f", &p);

printf("輸入月利率: ");

scanf(" %f", &r);

printf("輸入期數:");

scanf(" %d", &n);

printf("本利和= %d\n",get_sum(s));

system("PAUSE");

//return 0;

}

這是用來計算復利地................結果並不對

公式:本利和=本金*( 1 加 月利率)^期數

幫看看吧囧

已更新項目:

恩恩,感謝john跟小紀的解答,我會照你們的意見去試試地,有問題再問喔,感謝QQQ

2 個已更新項目:

絕對不是我copy地,我自已寫出來地,別人寫地宣告會這樣嗎@@

3 個已更新項目:

兩個都給我很好的幫助,我交給大家投票好了囧

2 個解答

評分
  • John
    Lv 6
    2 0 年前
    最佳解答

    問題一:你看得懂每一行的指令嗎?請邊看邊翻書。

    問題二:你應該還沒搞懂變數的範圍。

        get_sum的p可不等於main的p,兩個是不同的變數。

        所以main的p,r,n的值,再get_sum裡面的p,r,n是看不到的,

        也就是get_sum的運算跟你輸入的值無關,自然結果不對。

    問題三:你函式的概念也還沒搞清楚。

        int get_sum(int s)的意思是,

        這個函式有一個傳入值s,會傳回一個 int (前面的int,沒有名稱)。

        詳細內容請看課本。

        提示:函式提供多個參數的傳入功能

    基本上你程式的邏輯上是對的,

    但是在變數跟函式的使用格式上不對,

    所以跑不出來你要的結果。

    參考資料: 自己
  • 2 0 年前

    補充:

    我是不是被你騙了。

    你的程式碼是不是COPY過來的,怎麼在好多地方都看到極類似的,連錯誤都差不多。

    感謝你在我其他的回答給正面回應。

    #include <iostream.h>

    #include <stdlib.h>

    #include <stdio.h>

    int get_sum( float pp, float rr, int nn) //有用到輸入資訊就應載入相對應的資訊位置

    { //自訂函式中的變數名稱最好與主程式中的不同,避免編譯時出錯

    float tmp, q=1, s=0;

    tmp=(1 + rr);

    for(int i=1;i<=nn;i++) //nn必須大於零,幾期就運算幾次

    {

    q= q*tmp; //期數是次方根,但*號無法寫成*=。q=0就無法重複運算。

    }

    s=pp*q; //避免程式運算錯誤,s改成float型態。

    int sa=0; //另用int數值轉接s如下一行。

    sa = (int)s;

    return sa; //回傳出結果,但光形態轉換是無法四捨五入的。

    }

    //-----------------------//

    void main(void)

    {

    float p,r;

    int n;

    printf("輸入本金: ");

    scanf(" %f", &p);

    printf("輸入月利率: ");

    scanf(" %f", &r);

    printf("輸入期數:");

    scanf(" %d", &n);

    printf("本利和= %d\n",get_sum(p,r,n)); //使用自訂函式只需置入函式中所指定資料

    system("PAUSE");

    //return 0;

    }

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