//这是出错的代码,调用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.请按任意键继续. . .小白c语言调用函数时出现异常,改一下又正常,不知原因,求前辈点拨
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
波塞冬的祝福 2021-01-08 13:26关注你delta = 0 是赋值语句。 应该用 delta == 0
34行 else if (delta == 0)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报