编译器错误:
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;
}
答案 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
不需要表达式。 ==
是比较运算符,而不是=
。 a
,b
和c
未初始化。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. */
/* ... */