c语言:求一元二次方程的跟,系数a,b,c由键盘输入(要求考虑所有情况)
2015-12-01 01:18
826 查看
求一元二次方程的跟,系数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
程序:
#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
相关文章推荐
- c语言:任给三条边长,判断能否构成三角形,如果能,求出其面积和周长
- c语言:两种方法实现给定一个大写字母,用小写字母输出
- c语言:获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- c语言:将数组A中的内容和数组B中的内容进行交换。(数组一样大)
- c++11 单例模式
- C++学习笔记2
- 嵌入式寄存器操作-----C语言位操作的学习
- C语言URL编解码
- 先来先服务算法实现(c语言)
- leetcode笔记:Construct Binary Tree from Inorder and Postorder Traversal
- 【C语言】测试系统各数据类型大小代码
- The C++ Standard Library: RTTI(Run-Time Type Identification,运行时类型识别)
- leetcode笔记:Construct Binary Tree from Preorder and Inorder Traversal
- 用C++模拟操作系统进程调度的几种算法
- leetcode 258 Add Digits C++
- 【C语言提高13】二级指针
- 冒泡排序
- 字符串函数汇总
- 【iOS学习笔记】c语言问题
- STL运用的C++技术(2)——模板特化