-5

コードでこれらのエラーが発生し続けていますが、その意味がわかりません。誰か私にその意味を説明してもらえますか?

エラー:

lab62.c: 関数 'circumfrence' 内:

lab62.c:7:1: エラー: 「void」の前に「=」、「,」、「;」、「asm」または「<strong>attribute」が必要です</p>

lab62.c:31:1: エラー: 予想される '='、','、';'、'asm' または '<strong>attribute' が '{' トークン lab62.c:40:1: エラー: 予想される ' ='、','、';'、'asm' または '{' トークンの前の '<strong>attribute'

lab62.c:49:1: エラー: '{' トークンの前に '='、','、';'、'asm' または '<strong>attribute' が必要です

lab62.c:55:1: エラー: 入力の最後に「{」が必要です

編集:関数にセミコロンを追加したところ、これらすべてのエラーが発生しています

lab62.c: 関数 'circumfrence' 内:

lab62.c:36:2: 警告: フォーマット '%f' はタイプ 'double' の引数を想定していますが、引数 2 のタイプは 'float *' [-Wformat]

lab62.c: 関数 'area' 内:

lab62.c:44:8: エラー: バイナリ ^ へのオペランドが無効です ('float' と 'int' があります)

lab62.c:45:2: 警告: フォーマット '%f' には 'double' 型の引数が必要ですが、引数 2 の型は 'float *' です [-Wformat]

lab62.c: 関数「ボリューム」内:

lab62.c:50:8: エラー: 'v' が別の種類のシンボルとして再宣言されました

lab62.c:48:19: 注: 「v」の以前の定義はここにありました

lab62.c:52:31: エラー: 'r' が宣言されていません (この関数で最初に使用)

lab62.c:52:31: 注: 宣言されていない各識別子は、それが現れる関数ごとに 1 回だけ報告されます

lab62.c:54:2: 警告: フォーマット '%f' はタイプ 'double' の引数を想定していますが、引数 2 のタイプは 'float *' [-Wformat]

ソースコード:

#include <stdio.h>
#include <math.h>
#define pi 3.147

void circumfrence(float r)
void area(float r)
void volume(float r)

int main()
{
    void (*f[3])(float) = { circumfrence, area, volume };
    int choice;
    float r;
    printf("enter a value for the radius\n");
    scanf("%f", &r);
     printf("enter a number between 0 and 2, 3 to end: ");
    scanf("%d", &choice);

    while(choice >= 0 && choice < 3) {
        (*f[choice])(r);
        printf("enter a number between 0 and 2, 3 to end: ");
        scanf("%d", &choice);
    }
    printf("program execution completed\n ");
    return 0;
}

void circumfrence(float r)
{
    float c;
    printf("you wish to process the area");
    printf("the radius is %f: ", r);
    c = (2*r)*pi;
    printf("%f", &c);
}

void area(float r)
{
    float a;
    printf("you wish to process the volume");
    printf("the radius is %f: ", r);
    a = (r^2)*pi;
    printf("%f", &a);
}

void volume(float v)
{
    float v;
    printf("you wish to process the circumfrence");
    printf("the radius is %f: ", r);
    v = (4/3)*(r^3)*(pi);
    printf("%f", &v);
}
4

1 に答える 1

1

;コードの最初の 3 つの関数宣言の後にセミコロンを追加するのを忘れています。正しいコードは次のとおりです。

void circumfrence(float r);
void area(float r);
void volume(float r);

編集: 44 行目では^、C で必要なものを使用することはできません。また、53行目でも同じことa = (r*r)*pi;ができます。a = pow(r,2)*pi;

50 行目で、v変数を再宣言しました。fパラメータと変数が混同されていfます。v50 行目で別の名前を使用する必要があります。

編集2:

値を印刷する場合は、参照を使用する必要はありません。を使用するときは、変数の前にprintfa を付けないでください。&次のようにします。

printf("%f\n", c);
printf("%f", a);
printf("%f", v);
于 2012-04-21T05:38:45.440 に答える