C 有人能给我解释一下这些错误吗?它表示一元'*';(有';int';)。我想计算一个二次方程的根

C 有人能给我解释一下这些错误吗?它表示一元'*';(有';int';)。我想计算一个二次方程的根,c,C,我正在学习C语言,我必须创建一个程序来计算二次方程的根。我已经编写了一个代码,可以将整个二次方程作为用户的输入,然后将其分配给变量。但是当我使用switch语句时,它显示了一个错误。请帮忙 #include <stdio.h> #include <stdlib.h> int main() { char a[20]; char firstOperand; char b[20]; char secondOperand; cha

我正在学习C语言,我必须创建一个程序来计算二次方程的根。我已经编写了一个代码,可以将整个二次方程作为用户的输入,然后将其分配给变量。但是当我使用switch语句时,它显示了一个错误。请帮忙

#include <stdio.h>
#include <stdlib.h>    

int main()
{
    char a[20];
    char firstOperand;
    char b[20];
    char secondOperand;
    char c[20];
    char thirdOperand = '=';
    char d = '0';
    int a1;
    int b1;
    int c1;
    int d1;
    int D;
    int x1;

    printf("Please enter the quadratic equation: ");
    scanf("%s %c %s %c %s", a, &firstOperand, b, &secondOperand, c);

    a1 = atoi(a);
    b1 = atoi(b);
    c1 = atoi(c);

    printf("%d %d %d", a1, b1, c1);
    switch(-b1 + sqrt((b1**2) - (4*a1*c1))/ (2*a1))
           {
          case 1:
              x1 = (-b1 + sqrt((b1**2) - (4*a1*c1))/ (2*a1));
              printf("The first root of the quadratic equation is: %d", x1);
              break;
           }

    return 0;
}
#包括
#包括
int main()
{
chara[20];
字符第一个操作数;
charb[20];
字符第二操作数;
charc[20];
char thirdOperand='=';
字符d='0';
int a1;
int b1;
int c1;
int d1;
int D;
int-x1;
printf(“请输入二次方程:”);
scanf(“%s%c%s%c%s”,a和第一个操作数,b和第二个操作数,c);
a1=atoi(a);
b1=原子(b);
c1=atoi(c);
printf(“%d%d%d”,a1、b1、c1);
开关(-b1+sqrt((b1**2)-(4*a1*c1))/(2*a1))
{
案例1:
x1=(-b1+sqrt((b1**2)-(4*a1*c1))/(2*a1));
printf(“二次方程的第一根为:%d”,x1);
打破
}
返回0;
}

这些就是我所犯的错误。还要注意的是,我刚刚开始学习c编程,正如评论中提到的,您有几个问题


首先,
**
在C中不是有效的运算符。
b1**2
被解释为
b1*(*2)
-编译器认为您将
2
视为指针并试图取消引用它。由于
2
int
而不是指针类型,编译器正在抱怨

C没有指数运算符-您要么必须手动执行乘法(
b1*b1
),要么必须使用
pow
函数(
pow(b1,2)

其次,您需要为
sqrt
(和
pow
以及trig函数和其他数学函数)包含

最后,
switch
对整数表达式进行操作,但是表达式中的
sqrt
保证了浮点结果。我甚至不清楚为什么要使用
开关。你想在那里做什么


此外,整数除法产生整数结果-
1/2==0
3/2==1
5/2==2
,等等。
(4*a1*c1)/(2*a1)
可能不会给出您期望的结果。您可能希望将变量声明为
double
而不是
int
(这意味着您需要在
scanf
调用中使用
%lf
而不是
%d
).

**
在C中不是有效的运算符。请改用
b1*b1
。请注意
#include
缺失,并且
sqrt
返回浮点值。您是否尝试使用整数算术(特别是除法)进行所有计算?您希望
开关如何工作?Bobs注释表示您没有打开编译器的警告:打开它们!switch表达式的结果有问题(在几个方面)。除此之外,带有
ints
的eg除法不会产生可靠的计算结果。