c语言输出ax²+bx+c=0的根。帮我看看错在哪,谢谢。
答案:4 悬赏:0
解决时间 2021-04-21 01:04
- 提问者网友:不懂我就别说我变
- 2021-04-20 14:49
请问谁能帮我看看这个程序错在哪里,每次输入a,b,c都输出的定值,并且不是根。
谢谢大家啦
#include
#include
void main()
{ double a,b,c,x1,x2,d,i,t;
printf("请输入 a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
d=b*b-4*a*c;
i=sqrt(-1);
if(a=0)
printf("不是二次函数");
else if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%d,x2=%d\n",x1,x2);
}
else if(d<0)
{
x1=(-b+i*sqrt(d))/(2*a);
x2=(-b-i*sqrt(d))/(2*a);
t=-b/(2*a);
printf("x1=x2=%d\n",t);
printf("x1=%d,x2=%d\n",x1,x2);
}
else
{
}
}
最佳答案
- 二级知识专家网友:没感情的陌生人
- 2021-04-20 16:17
#include
#include
void main()
{
double a,b,c,x1,x2,d,i,t;
printf("请输入 a,b,c:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
d=b*b-4*a*c;
printf("%3.1lf\t%3.1lf\n",a,d,i);
if(a==0)
printf("不是二次函数");
else
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%lf,x2=%lf\n",x1,x2);
}
else if(d<0)
{
t=-b/(2*a);
x1=(-b+sqrt(fabs(d)))/(2*a);
x2=(-b+sqrt(fabs(d)))/(2*a);
printf("x1=%3.1lf+%3.1lfi,x2=%3.1lf-%3.1lfi\n",t,x1,t,x2);
}
else
{
t=-b/(2*a);
printf("x1=x2=%3.1lf\n",t);
}
}
}
0.a==0
1.sqrt(-1)是错误的,复数不能开方
2.输出和输入应该用%lf,写成%3.1lf是为了限制一下长度
3.你的结构不清楚,导致输出逻辑,当a!=0时,再进行对d的判断,分别输出相应的结果。
4.复数根是带i的,但是i不要带入运算,而是在结果中表示,出来,把判别式看成两个分式的和
全部回答
- 1楼网友:颜值超标
- 2021-04-20 19:14
if(a=0)换成if(a==0)
输出跟输入的%d全换成%lf.
- 2楼网友:末路丶一枝花
- 2021-04-20 19:03
(b*b-4*a*c)>0; 这句是啥? 加 if判断
- 3楼网友:如果这是命
- 2021-04-20 17:34
赋值用一个等号判断用两个等号
我要举报
大家都在看
推荐资讯