其实这东西很简单,我给你看个示例:
#include<stdio.h>
#include<math.h>
/*
#include<math.h> 应为要实现指数和开根所以分别要使
用pow函数和sqrt函数 pow(变量,指数) sqrt(变量)
*/
int main(void)
{
double a, b, c, deta; // 因为有小数,为了方便全部定义为双精度
double x1,x2;
scanf("%lf %lf %lf", &a, &b, &c);
deta = pow(b, 2) - 4 * a * c; // 计算判断式的值
if(deta > 0) {
// deta大于0
x1=(-b + sqrt(deta)) / 2 * a;
x2=(-b - sqrt(deta)) / 2 * a;
printf("x1=%.3lf\nx2=%.3lf\n", x1, x2);
} else if(deta == 0) {
// deta等于0
x1 = (-b) / (2 * a);
x2 = (-b) / (2 * a);
printf("x1=%.3lf\nx2=%.3lf\n", x1, x2);
} else {
// deta小于0
double m,n; // 因为是共轭复根,定义两个变量
m = (-b) / (2 * a);
n = sqrt(-deta)/(2*a);
printf("x1=%.3lf+%.3lfi\nx2=%.3lf-%.3lfi\n", m, n, m, n);
}
return 0;
}
你只要了解一元二次方程怎么求就能写出来
int main()
{
int a=0,b=0,c=0;
scanf("%d%d%d%",&a, &b, &c);
float x1 = (-b + sqrt((float)(b*b-4*a*c)))/(2*a);
float x2 = (-b - sqrt((float)(b*b-4*a*c)))/(2*a);
printf("x1=%.3f\nx2=%.3f", x1,x2);
return 0;
}
边界值你自己判断一下