#include<stdio.h>
#include<math.h>
double delta(double,double,double);
int main()
{
double a,b,c,x1,x2;
printf("请输入系数a,b,c\n");
scanf("%lf %lf %lf",&a,&b,&c);
if(a==0)
{
printf("不是一元二次方程");
}
else if(delta(a,b,c)<0)
{
printf("无实数根");
}
else if(delta(a,b,c)==0)
{
double x;
x=-b/2/a;
printf("两相等根为%lf",&x);
}
else if(delta(a,b,c)>0)
{
x1=-b/(2*a)+sqrt(delta(a,b,c))/(2*a);
x2=-b/(2*a)-sqrt(delta(a,b,c))/(2*a);
printf("两实数根为%lf %lf",&x1,&x2);
}
return 0;
}
double delta(double a,double b,double c)
{
double d;
d=b*b-4*a*c;
return d;
}
为什么这个c语言一元二次方程根的程序当两实数根时两根为零?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- CSDN专家-Time 2021-05-05 21:06关注
公式没问题,printf有问题,不要带取地址,不要带取地址,不要带取地址。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报