#include <math.h>
int main(void)
{
double a,b,c,disc,x1,x2,imagpart,realpart,m,n
printf("please input a,b,c(a!=0):\n")
scanf("%lf%lf%lf",&a,&b,&c)
disc = b * b - 4 * a * c
m = - b / (2 * a)
n = sqrt(disc) / (2 * a)
if (fabs(disc) <1e-8)
{
printf("x1=x2=%8.2f\n",x1)
}
else
if (disc >0)
{
x1 = m + n,x2 = m - n//有两个不等实根
printf("x1=%8.2f\t,x2=%8.2f\n",x1,x2)
}
else
{
realpart = m
imagpart = sqrt(-disc) / (2 * a) //有两个共轭复根
printf("x1=%8.2f+%.2fi\t,x2=%8.2f-%.2fi\n",realpart,imagpart,realpart,imagpart)
}
return 0
}
你的if语句那的括号有问题
#include<stdio.h>#include<math.h>
int main(){
double a,b,c,d,x1,x2
scanf("%f%f%f",&a,&b,&c)
if(a==0){
if(b==0){
if(c==0)
printf("该式为恒等式\n")
else
printf("该式不成立,请重新输入a,b,c\n")
}else{
x1=c/b
printf("x1=x2=%f\n",x1)
}else
d=b*b-4*a*c
if(d<0){
d=-d
x1=(-b+sqrt(d))/(2*a)
x2=(-b-sqrt(d))/(2*a)
printf("x1=%f,x2=%f,虚根\n",x1,x2)
}else{
x1=(-b+sqrt(d))/(2*a)
x2=(-b-sqrt(d))/(2*a)
printf("x1=%f,x2=%f\n",x1,x2)
}
return 0
}