0

ターミナルでこのコードをコンパイルしているときに、次のようなエラーが表示されます。

newfile1.c:17: error: conflicting types for ‘average’
newfile1.c:2: note: previous declaration of ‘average’ was here

コードの何が問題なのかわかりません。誰か助けてくれませんか?

enter code here
#include<stdio.h>
float average(float);
int main()
{
        float marks[4],avg;
        int i;
        printf("Please enter your marks\n");
        for(i=0;i<=3;i++)
        {
                scanf("%d",&marks[i]);
        }
        avg = average(marks[4]);
        printf("The average marks value is %f",avg);
        return 0;
}



float average(float a[4])
{
       int i,sum;
       float avg_m;
       for(i=0;i<=3;i++)
       {
               sum=sum+a[i];
       }
       avg_m=sum/3;
       return avg_m;
}
4

5 に答える 5

9

交換

float average(float);

float average(float[]);

関数の宣言と定義が一致していません。

次に、次のように関数を呼び出します。

avg = average(marks);

于 2013-03-08T06:47:31.033 に答える
2

ファイルの行を変更します

float average(float);

float average(float []);

floatの配列が必要な代わりに、1つを取るように関数を宣言しましたfloats

また、 で呼び出している間にmain

avg = average(marks);
于 2013-03-08T06:48:52.590 に答える
1
float average(float);

float 変数が必要です。配列を渡す必要があるので、追加し float average(float[]);ます。関数の宣言と定義が一致しないため、エラーが発生しました。

avg = average(marks);メインでは、関数に配列を渡すために呼び出してavg = average(marks[4]);、単一の変数を渡す必要があります。

于 2013-03-08T06:48:59.970 に答える
1

のプロトタイプではaveragefloat引数の型として指定したため、コンパイラは引数として単一の float 値を想定しています。値の配列を渡したい場合は、プロトタイプを次のように宣言する必要があります。

float average(float input_marks[]);

プロトタイプまたは定義で配列引数の長さを指定することはできません。配列の長さを別の引数として渡す必要があります。したがって、プロトタイプは次のようになります

float average(float a[], int a_length);
于 2013-03-08T06:55:45.810 に答える
0

関数は引数として1 つaverageを取るため、宣言は である必要があります。そうする場合、関数が引数として4つの浮動小数点数の配列を取ることをコンパイラに伝えています。 floatfloa avaerage(float)float average(float a[4])

于 2013-03-08T06:49:41.847 に答える