C语言 任意输入一元二次方程的系数a, b, c,计算并输出一元二次方程的所有根

/*编写程序:任意输入一元二次方程的系数a,b,c,计算并输出一元二次方程的所有根。*/#include<stdio.h>#include<math.h>voidmain... /*编写程序:任意输入一元二次方程的系数a, b, c,计算并输出一元二次方程的所有根。*/
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,x1,x2,disc;
scanf("f%f%f%",&a,&b,&c);
disc=b*b-4*a*c;
if(fabs(a)<=1e-6)
{
x1=-c/b;
printf("%2.4f",x1);

}
else if(disc>=0)
{
x1=float(-b+sqrt(disc))/(2*a);
x2=float(-b-sqrt(disc))/(2*a);
printf("%2.4f%2.4f",x1,x2);
}
else(disc<0)
{
printf("根为共轭复数");
}
}
为什么无论输入什么都是 根为共轭复数
求找错
展开
 我来答
飘雨56
2017-04-10 · 一分耕耘一分收获,凡事预则立
飘雨56
采纳数:931 获赞数:4490

向TA提问 私信TA
展开全部
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,x1,x2,disc;
scanf("f%f%f%",&a,&b,&c); //改成scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
if(fabs(a)<=1e-6)
{
x1=-c/b;
printf("%2.4f",x1);

}
else if(disc>=0)
{
x1=float(-b+sqrt(disc))/(2*a);
x2=float(-b-sqrt(disc))/(2*a);
printf("%2.4f%2.4f",x1,x2);
}
        else(disc<0)  //改成 else if(disc<0)
{
  printf("根为共轭复数");
}
}
追问
十分感谢   自己找还真没找出来
可爱的园丁儿
2018-03-30 · TA获得超过2445个赞
知道小有建树答主
回答量:15
采纳率:90%
帮助的人:1942
展开全部

其实这个问题,我也不知道具体是为什么。但是以下是我对此问题的理解:

  • 先使用读入函数,从键盘读入三个数。

  • 你这三个数,分别是一元二次方程的 ax^2+bx+c=0中的abc,那么你就是用公式先判断△=b^2-4ac的情况,分三种 :

  • 1 △≥0 有两个实数根 x=[-b±(b^2-4ac)^(1/2)]/2a。

  • 2 △<0 无实数根。

  • 在编程的过程中 得给 abc的取值界定类型。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式