用户输入一元二次方程ax^2+bx+c=0的系数a b c. 编写程序判断该方程在实数范围内是否有根并输出其实数根.
#include <stdio.h>
#include <math.h>
int main()
{
double disc, a, b, c, p, q, x1, x2;
printf("请输入a和b和c的值:\n");
scanf("%lf %lf %lf", &a, &b, &c);
disc = b * b - 4 * a * c;
if (disc < 0)
printf("改方程无实数根\n");
else
{
p = (-b) / (2 * a);
q = sqrt(disc) / (2 * a);
x1 = p + q;
x2 = p - q;
printf("x1=%7.2f\nx2=%7.2f\n", x1, x2);
}
return 0;
}
#include<stdio.h>
#include<math.h>
int main() {
double a, b, c, d, x1, x2;
scanf("%lf %lf %lf", &a, &b, &c);
d = b * b - 4 * a * c;
if(d < 0) {
printf("无实数根");
} else {
d = sqrt(d);
x1 = (-b + d) / (2 * a);
x2 = (-b - d) / (2 * a);
printf("%.2lf %.2lf", x1, x2);
}
return 0;
}
一元二次方程公式解
x=(-b±√(b^2-4ac))/2a,
其中Δ=b^2-4ac,
输入abc后带入delta判别式并判正负,负数直接无根,
正数带入算一下
...
#include <stdio.h>
int main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
double delta=b*b-4*a*c;//delta判别式
if(delta<0) printf("No answer in R!");
else {
delta=sqrt(delta);//开方
double x1=(-b+delta)/(a*2);
double x2=(-b-delta)/(a*2);
printf("x1=%.2lf\n",x1);
if(x1!=x2) printf("x2=%.2lf\n",x2);
}
return 0;
}
根据公式 $x_{1,2}=\tfrac{-b\pm\sqrt{b^2-4ac}}{2a}$ 可编写程序求解。
当 $\sqrt{b^2-4ac} <0$ 时,无实数解。