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

幫解一下C++的程式

#include<stdio.h>

int max(int,int);

double avg(int,int);

main(){

int i, a[5]={20,15,26,3,5}, n;

for(i=0;i<5;i++)

printf("%d ",a[i]);

printf("\n%d ",max(a,n));

printf("\n%f ",avg(a,n));

system("pause");

return 0;

}

int max(int a[],int n)

{

for(i=0;i<5;i++)

if(a[i]>a[i+1])

{a[i]=n;

n=a[i+1];

a[i+1]=a[i];}

}

return a[i];

double avg(int a[],int n)

{

(a[0]+a[1]+a[2]+a[3]+a[4])/5;

};

利用遞迴做出最大直 和平均

我寫到這樣不知道哪裡錯了!

請高手幫忙解答

3 個解答

評分
  • 1 0 年前
    最佳解答

    #include<stdio.h>

    int max(int,int);

    double avg(int,int);

    main(){ // 沒設回傳值,後面卻傳回0,改成 int main(){

    int i, a[5]={20,15,26,3,5}, n; // 改成 n = 0;

    // 因為把n丟到函式裡計算,必須初始化才不會錯誤

    for(i=0;i<5;i++)

    printf("%d ",a[i]);

    printf("\n%d ",max(a,n));

    printf("\n%f ",avg(a,n));

    system("pause");

    return 0;

    }

    int max(int a[],int n) // 有設回傳值卻沒有回傳

    {

    for(i=0;i<5;i++)

    if(a[i]>a[i+1])

    {a[i]=n;

    n=a[i+1];

    a[i+1]=a[i];}

    // 這裡加上 return n;

    }

    return a[i]; // 這個跑到函式外面了,去掉

    double avg(int a[],int n) // 有設回傳值,卻沒回傳

    {

    (a[0]+a[1]+a[2]+a[3]+a[4])/5;

    /*

    改成

    n = (a[0]+a[1]+a[2]+a[3]+a[4]);

    double a = static_cast<double>(n)/5;

    return a;

    */

    }; // 不需要分號 改成{

    2009-04-21 20:02:42 補充:

    最後面是} XDD

    參考資料: Me
  • 5 年前

    int main()

    { int i = 5;

    printf(“%f”,i);

    return 0; }

  • 1 0 年前

    你求最大數的部份怪怪的

    int max(int a[],int n)

    {

    for(i=0;i<5;i++)

    if(a[i]>a[i+1])

    {a[i]=n;

    n=a[i+1];

    a[i+1]=a[i];}

    return a[i]; //這一行是在這嗎?

    }

    首先,

    if(a[i]>a[i+1])

    {a[i]=n;

    n=a[i+1];

    a[i+1]=a[i];}

    這部份是要做兩數交換嗎? 是的話, 要這樣寫才對.

    if(a[i]>a[i+1])

    { n = a[i];

    a[i] = a[i+1];

    a[i+1]=n;}

    n 用來做暫時變數

    再來,

    for(i=0;i<5;i++) 應該改成 for(i=0;i<4;i++) 因為你最多只到a[4], 沒到a[5]

    先這樣試試看, 有問題再說

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