您的位置:首页 > 编程语言 > C语言/C++

c语言:求一元二次方程的跟,系数a,b,c由键盘输入(要求考虑所有情况)

2016-05-29 13:36 609 查看
求一元二次方程的跟,系数a,b,c由键盘输入
程序:
#include<stdio.h>
#include<math.h>
#define ESP 0.00001
int main()
{
double a, b, c, d, p, q, x1, x2,imagpart;//imagpart表示虚部
printf("请输入a,b,c的值:");
scanf("%lf%lf%lf", &a, &b, &c);
d = b*b - 4*a*c;
p = -b / (2.0*a);
q = sqrt(d) / (2.0*a);
x1 = p + q;
x2 = p - q;
if ((a >-ESP)&&(a<ESP))
{
printf("不是一元二次方程\n");
}
else
{
if (d > 0)
{
printf("x1=%lf\nx2=%lf\n", x1, x2);//用lf输出小数部分占6位
/*printf("x1=%7.2f\nx2=%7.2f\n", x1, x2);*///输出指定数据占7列,小数占2列
}
else if ((d >-ESP) && (d<ESP))
{
printf("原方程有两个相等的实根:\n");
printf("x1=x2=%lf\n", x1);
}
else
{
imagpart = sqrt(-d) / (2.0*a);
printf("原方程有两个共轭复根:\n");
printf("x1=%lf+%lfi\n",p, imagpart);
printf("x2=%lf-%lfi\n", p, imagpart);
}
}
return 0;
}
结果1:
请输入a,b,c的值:2 3 1
x1=-0.500000
x2=-1.000000
请按任意键继续. . .
结果2:
请输入a,b,c的值:0 1 2
不是一元二次方程
请按任意键继续. . .
结果3:
请输入a,b,c的值:3 2 1
原方程有两个共轭复根:
x1=-0.333333+0.471405i
x2=-0.333333-0.471405i
请按任意键继续. . .
结果4:
请输入a,b,c的值:1 -2 1
原方程有两个相等的实根:
x1=x2=1.000000
请按任意键继续. . .

本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1718369
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: