-1

コンパイラ エラー:

pythagoras.c: In function ‘main’:
pythagoras.c:22:4: fejl: ‘else’ without a previous ‘if’
pythagoras.c:29:5: fejl: ‘else’ without a previous ‘if’

コード:

#include <stdio.h>
#include <math.h>
int main(void)
{
  double a, b, c;
  double secondside1, secondside2, secondside3;
char Scanres;
printf("Hvilken side vil du finde? a, b eller c?\n");
Scanres = scanf("%c", &Scanres);
secondside1 = a * a;
secondside2 = b * b;
secondside3 = c * c;

    if(Scanres = c);

    printf("Indtast værdierne af a og b\n");
    scanf("%lf%lf", &a, &b);
    c = sqrt(secondside1 + secondside2);
        printf("c er %f", c);

        else if(Scanres = b);

        printf("Indtast værdierne af a og c\n");
        scanf("%lf%lf", &a, &c);
        b = sqrt(secondside3 - secondside2);
        printf("b er %f\n", b);

            else(Scanres = a);

            printf("Indtast værdierne af b og c\n");
            scanf("%lf%lf", &b, &c);
            a = sqrt(secondside3 - secondside1);
            printf("a er %lf", a);
return 0;
}
4

4 に答える 4

3

ifステートメントの構文は次のとおりです。

if (expr) statement;

statement命令ブロックになる可能性があるため、括弧を追加する必要があります。

int main(void)
{
    double a, b, c;
    double secondside1, secondside2, secondside3;
    char Scanres;
    printf("Hvilken side vil du finde? a, b eller c?\n");
    Scanres = scanf("%c", &Scanres);
    secondside1 = a * a;
    secondside2 = b * b;
    secondside3 = c * c;

    if (Scanres == c) 
    {
        printf("Indtast værdierne af a og b\n");
        scanf("%lf%lf", &a, &b);
        c = sqrt(secondside1 + secondside2);
        printf("c er %f", c);
    }
    else if (Scanres == b) 
    {

        printf("Indtast værdierne af a og c\n");
        scanf("%lf%lf", &a, &c);
        b = sqrt(secondside3 - secondside2);
        printf("b er %f\n", b);
    }
    else 
    {
        printf("Indtast værdierne af b og c\n");
        scanf("%lf%lf", &b, &c);
        a = sqrt(secondside3 - secondside1);
        printf("a er %lf", a);
    }
    return 0;
}
  • else表現はいらない。
  • あなたは良い演算子を使用していません。==は比較演算子であり、 ではありません=
  • abおよびc初期化されていません。
  • scanf戻り値は、読み取った値ではなく、正常に一致して割り当てられた入力項目の数です。

根拠を読むべし。

于 2012-10-17T15:33:16.720 に答える
1

C の比較演算子は です==。シングル=で課題をやっています。

また、後にセミコロンがあるif()と、思ったコード パスではなく、空のステートメントが実行されます。

C ではインデントは自由であり、意味を持たないため、意味がないと思われる場合でもコンパイラは警告しません。

さらに、これ:

Scanres = scanf("%c", &Scanres);

あまり意味がありません。このscanf()関数は、読み取った文字を に書き込みScanresますが、その値を の戻り値scanf()(変換の回数) を同じ変数に格納することで上書きします。

于 2012-10-17T15:32:42.753 に答える
1

セミコロンを削除してください

if(Scanres = c);

そして、次のようなブラケットを使用します

if ( statement)
{
  code
}
else if ( statement )
{
code
}
else
{
code
}

これで解決するはずです。「a」「b」および「c」で定義された変数を正しく入力していることを確認してください。

#include <stdio.h>
#include <math.h>
int main(void)
{
  double a, b, c;
  a = 10 ;
  b = 12 ;
  c = 15 ;

  // Here you must make it that the user inputs the 3 variables ; I have entered them manually first 
  // Use scanf or fgets to input the 3 variables. And there you go !!

  double secondside1, secondside2, secondside3;
  char Scanres;
  printf("Hvilken side vil du finde? a, b eller c?\n");
  Scanres = scanf("%c", &Scanres);
  secondside1 = a * a;
  secondside2 = b * b;
  secondside3 = c * c;

    if(Scanres == c)
    {
    printf("Indtast værdierne af a og b\n");
    scanf("%lf%lf", &a, &b);
    c = sqrt(secondside1 + secondside2);
        printf("c er %f", c);
    }
        else if(Scanres == b)
    {
        printf("Indtast værdierne af a og c\n");
        scanf("%lf%lf", &a, &c);
        b = sqrt(secondside3 - secondside2);
        printf("b er %f\n", b);
    }
    else if(Scanres == a)
    {
            printf("Indtast værdierne af b og c\n");
            scanf("%lf%lf", &b, &c);
            a = sqrt(secondside3 - secondside1);
            printf("a er %lf", a);
    }
return 0;
}
于 2012-10-17T15:33:36.373 に答える
1

あなたの if/else 構文はすべて不安定です。中括弧を使用{}して、各条件に関連付けられたブロックを識別する必要があります。さらに、==演算子を使用して等しいかどうかをテストします。

if (Scanres == c) { /* Start the block for this case */
  /* ... */
} else if (Scanres == b) { /* Here's how you do an "else if" block. */
  /* ... */
于 2012-10-17T15:34:40.013 に答える