//这是出错的代码,调用equal_to_zero和smaller_than_zero两个函数时会出现异常
//输入a,b,c的值,求二次函数的根
# include<stdio.h>
# include<math.h>
float x1, x2, delta, p, q;
void grater_than_zero(float a, float b)
{
x1 = -b / (2 * a) + sqrt(delta) / (2 * a);
x2 = -b / (2 * a) - sqrt(delta) / (2 * a);
}
void smaller_than_zero(float a, float b)
{
p = -b / (2 * a);
q= sqrt(_delta) / (2 * a);
}
void equal_to_zero(float a, float b)
{
x1 = x2 = -b / (2 * a);
}
void main()
{
float a, b, c;
printf("请输入二次函数的三个系数:\n");
scanf("%f%f%f", &a, &b, &c);
delta =b*b-4*a*c;
printf("delta=:%f", delta);
if (delta > 0)
{
grater_than_zero(a, b);
printf("该方程的根: x1=%f,x2=%f.", x1, x2);
}
else if (delta = 0)
{
equal_to_zero(a, b);
printf("该方程的根: x1=x2=%f.", x1);
}
else
{
smaller_than_zero(a, b);
printf("该方程的根: x1=%f+%fi,x2=%f-%fi.", p,q,p,q);
}
}
请输入二次函数的三个系数:
1 2 4
delta=:-12.000000该方程的根: x1=-1.000000+-0.000000i,x2=-1.000000--0.000000i.请按任意键继续. . .
程序修改后为:删掉delta>0和delta=0两个函数有变正常了
//输入a,b,c的值,求二次函数的根
# include<stdio.h>
# include<math.h>
float x1, x2, delta, p, q;
void main()
{
void grater_than_zero(float a, float b);
void smaller_than_zero(float a, float b);
void equal_to_zero(float a, float b);
float a, b, c;
printf("请输入二次函数的三个系数:\n");
scanf("%f%f%f", &a, &b, &c);
delta = b*b - 4 * a*c;
printf("delta=:%f", delta);
smaller_than_zero(a, b);
printf("该方程的根: x1=%f+%fi,x2=%f-%fi.", p, q, p, q);
}
void smaller_than_zero(float a, float b)
{
p = -b / (2 * a);
q = sqrt(-delta) / (2 * a);
printf("p=%f,q=%f\n", p, q);
}
请输入二次函数的三个系数:
1 2 4
delta=:-12.000000p=-1.000000,q=1.732051
该方程的根: x1=-1.000000+1.732051i,x2=-1.000000-1.732051i.请按任意键继续. . .
你delta = 0 是赋值语句。 应该用 delta == 0
34行
else if (delta == 0)
多谢多谢,最近刚开始学,老是犯这种错误