我写的代码:
#include
int main() {
double a, b, c;
scanf("%f", &a, &b, &c);
double x1, x2, m;
m = a * a + b * b - c * c;
if (m = 0) {
printf("x1=x2=-%.6f");
}
else if (m > 0) {
printf("x1=-%.6f\nx2=-%.6f\n");
}
else if (m < 0) {
printf("This equation has no real root!");
}break;
return 0;
}
任务描述
编程输出一元二次方程ax
2
+bx+c=0 的根。已知系数a,b,c(实数)的值,要求按不同情况输出方程的两个不同的实根、两个相同的实根和方程没有实根的情形。
输入格式:
三个系数a,b,c的值。
输出格式:
参考输出样例,特别是两个实根时的输出顺序。
无实根时输出:This equation has no real root!
具体格式见样例。
输入样例:
1.0 5.0 4.0
输出样例:
x1=-1.000000
x2=-4.000000
输入样例:
1 2 1
输出样例:
x1=x2=-1.000000
输入样例:
2 9 4
输出样例:
x1=-0.500000
x2=-4.000000
输入样例:
1 1 9
输出样例:
This equation has no real root!
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
double x1, x2, m;
m = b*b-4*a*c;
if (m == 0) {
printf("x1=x2=%-.6f",-b/(2*a));
}
else if (m > 0) {
printf("x1=%-.6f\nx2=%-.6f\n",(-b+sqrt(m))/(2*a),(-b-sqrt(m))/(2*a));
}
else if (m < 0) {
printf("This equation has no real root!");
}
return 0;
}
m=0是赋值,改为m==0比较
此外,你的x1,x2根本没有计算呀,让你计算,计算的代码呢,你这输出了个寂寞
x1,x2计算之后,输出要改为
printf("x1=x2=-%.6f",x1);这里要传参啊,x1没传进来你输出什么呢