C语言
用dev编译
用于计算一元二次方程ax^2+bx+c=0
#include<stdio.h>
#include<math.h>
int main() {
float a, b, c, y, Y, x, dt, dtj;
scanf("%f %f %f", &a, &b, &c);
dt = (b * b) - (4 * a*c);
dtj = fabs(dt);
if (a == b && b == c && c == 0)
printf("Zero Equation");
else if (a == b && b == 0&&c!=0)
printf("Not An Equation");
else if (dt == 0) {
y = (-b) / (2 * a);
printf("%d", y);
}
else if (dt < 0) {
y = (-b) / (2 * a);
x = (sqrt(dtj)) / (2 * a);
printf("%d+%di\n%d-%di", y, x, y, x);
}
else {
y = (-b) / (2*a);
x = sqrt(dt) / (2*a);
printf("%d\n%d", y + x,y-x);
}
printf("%d %d %d %d %d %d %d",a,b,c,x,y,dt,dtj);
}
测试输入:1 1 1
输出:
0+-536870912i
0--536870912i0 0 0 -536870912 0 0 0
a b c y dt dtj 值都为0,x的值很奇怪,为啥会这样?