- #include <stdio.h> //标准输入输出头文件
- #include <math.h> //数学函数的头文件
- /***********主函数main()***********
- 函数说明:
- 用else if结构在复数范围内求解一元二次方程的根
- 函数功能:
- 实现在复数范围内求解一元二次方程的根
- 变量说明:
- a,b,c为一元二次方程的三个系数
- p为一元二次方程判别式b*b-4*a*c的结果
- x1,x2为一元二次方程的两个实根 realpart,imagepart为一元二次方程的实部和虚部
- 函数返回值:
- 此处不需要返回值,因此返回值为0.
- ***********************************/
- int main()
- {
- //临时变量,存放输入的系数
- float a,b,c,p;
- //临时变量,存放两个实根
- float x1,x2;
- //临时变量,存放虚部和实部
- float realpart,imagepart;
- printf("请输入一元二次方程的系数a,b,c:\n");
- scanf("%f%f%f",&a,&b,&c);
- //当a等于0并且b等于0时无解
- if(0 == a && 0 == b )
- {
- printf("无解!");
- }
- //当a等于0并且b不等于0时只有一个解
- else if(0 == a && 0 != b)
- {
- printf("方程只有一个解:%.3f\n",-c/b);
- }
- else
- {
- p = b*b - 4*a*c;
- realpart = -b/(2*a);
- imagepart = sqrt(fabs(p)/(2*a));
- //当判别式p小于0时,有虚数解
- if(p < 0)
- {
- printf("方程有虚数解:\n");
- printf("%.3f+%.3fi\n",realpart,imagepart);
- printf("%.3f+%.3fi\n",realpart,imagepart);
- }
- //当判别式p大于0时,有实数解
- else if(p > 0)
- {
- x1 = realpart + imagepart;
- x2 = realpart - imagepart;
- printf("方程有两个实数解:\n");
- printf("x1=%.3f\n",x1);
- printf("x2=%.3f\n",x2);
- }
- //当判别式p等于0时,只有一个实数解
- else
- {
- printf("方程只有一个实数解:%.3f\n",realpart);
- }
- }
- return 0;
用else if结构在负数范围内求解一元二次方程的根
最新推荐文章于 2022-07-05 17:47:49 发布