如果和其他陈述在这个小程序中不起作用,请帮助:)

时间:2012-10-17 15:31:17

标签: c

编译器错误:

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 个答案:

答案 0 :(得分: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不需要表达式。
  • 您不使用好运营商。 ==是比较运算符,而不是=
  • abc未初始化。
  • scanf返回值是成功匹配和分配的输入项数,而不是读取值。

你应该阅读基础。

答案 1 :(得分:1)

C中的比较运算符是==。只需一个=即可进行作业。

此外,在if()之后使用分号使其执行空语句,而不是您想到的代码路径。

请注意,缩进在C中是免费的,它没有任何意义,因此如果编译器看起来不合理,编译器将不会发出警告。

此外,这:

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

没有多大意义。 scanf()函数会将读取的字符写入Scanres,但是您将通过将scanf()的返回值(即它所做的转换次数)存储到该值中来覆盖该值。相同的变量。

答案 2 :(得分: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;
}

答案 3 :(得分: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. */
  /* ... */