C语言题“输入系数的有效值,计算一元二次方程的实根和虚根”怎么编?

如题所述

#include <stdio.h>
#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)
{
x1 = x2 = m; //有两个相等实根
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
给个算法的框架,你可以自己细化。

#include "math.h"
float a, b, c, delta;
scanf("%f,%f,%f", &a, &b, &c);
delta=b*b-4*a*c;
if(delta==0)
{
printf("Result is %5.2f\n", -b/(2*a));
}
else if(delta >0)
{
printf("Result is %5.2f, %5.2f\n", (-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a));
}
else
{
printf("Result is %5.2f+%5.2fi, %5.2f-%5.2fi\n",
-b/(2*a), sqrt(-delta)/(2*a), -b/(2*a), sqrt(-delta)/(2*a));
}本回答被提问者采纳
相似回答