问题遇到的现象和发生背景
求解一元二次方程时,当a ≠ 0 , b^2-4ac < 0 时,如何输出含有无理数i的结果?
用代码块功能插入代码,请勿粘贴截图
目前所写的代码(无理数i无法输出)
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
float a,b,c;
double i;
scanf("%f %f %f",&a,&b,&c);
if(a==0 && b==0 && c==0)
printf("方程的解为任意数");
else if(a==0 && b==0 && c!=0)
printf("方程无解");
else if(a==0 && b!=0)
printf("方程的解为:%.1f",-c/b);
else if(a !=0 && b*b-4*a*c == 0 )
printf("方程的解为:%.1f",-b/2*a);
else if(a != 0 && b*b-4*a*c > 0)
printf("方程的解为:%.1f和%.1f",(-b-sqrt(b*b-4*a*c))/(2*a),(-b+sqrt(b*b-4*a*c))/(2*a));
else if(a != 0 , b*b-4*a*c < 0 )
printf("方程的解为:%f和%f",(-b-i*sqrt(4*a*c-b*b))/2*a,(-b+i*sqrt(4*a*c-b*b))/2*a);
return 0;
}
运行结果及报错内容
我尝试的方法:
将i定义为double只是为了不报错而已这个肯定是错的。还试了用define,const ,char,都报错
我想要达到的结果
如图