#include <stdio.h>
#include <math.h> //开根号 sqrt 对应函数库
int main()
{
pr: printf("请输入三个数分别作为 a,b,c 的值,其间用空格隔开\n"); //goto 跳转语句标签
float a=0,b=0,c=0,delt=0,x1=0,x2=0,y=0; // a,b,c分别为其x前系数 ,定义类型为浮点数,起始值均为 0
scanf("%f%f%f",&a,&b,&c);
if(a==0) //二次项系数为 0 情况
{
if(b==0&&c==0)
printf("\n该等式不是方程!\n");
else if(b==0&&c!=0)
printf("\n该等式不是方程!\n");
else if(b!=0&&c==0)
printf("\n该等式不是方程!\n");
else if(b!=0&&c!=0)
printf("x=%.2f\n",-c/b);
}
else //二次项系数不为 0
{
delt=b*b-4*a*c; //德尔塔值
if(delt>0) //德尔塔大于零,两不相等实数根
{
x1=(-b+sqrt(delt))/(2*a); //求根公式计算 x 值
x2=(-b-sqrt(delt))/(2*a);
printf("x1=%.2f\nx2=%.2f\n",x1,x2);
}
else if(delt<0) //德尔塔小于零,两不相等虚数根
{
x1=-b/(2*a); //x1表虚根的实部
x2=sqrt(-delt)/(2*a); //x2表虚部的虚根
printf("x1=%.2f+%.2fi\n",x1,x2);
printf("x2=%.2f-%.2fi\n",x1,x2);
}
else
printf("x1=x2=%.2f\n",-b/(2*a)); //德尔塔等于零,两相等实数根
}
printf("\n输入1继续,输入其他退出:\n");
scanf("%f",&y);
if(y==1) goto pr; //满足条件则跳转至 pr 步骤
return 0;
}