代码运行
问题描述
编程求解一元二次方程。
算法分析
主要是对一元二次方程推导求解公式的抽象,根据b*b-4ac的值来进行分类,用求根公式即可得出结果。
因为要使用取绝对值函数fabs(),和开平方函数sqrt(),注意包含头文件#include<math.h>。
算法实现
#include<stdio.h> #include<math.h> void main() { float a,b,c,p,x1,x2,realpart,imagepart; printf("请输入一元二次方程的系数a,b,c的值:\n"); scanf("%f,%f,%f",&a,&b,&c); if(a==0 && b==0) printf("该方程无解!\n"); else if(a==0 && b!=0) printf("方程只有一个解:%.3f\n",-c/b); else //二次项系数a不为0 { p=b*b-4*a*c; realpart=-b/(2*a); imagepart=sqrt(fabs(p))/(2*a); //一元二次方程的实虚部 if(p<0) //有虚数解 { printf("方程有虚数解:"); printf("%.3f+%.3fi ",realpart,imagepart); printf("%.3f+%.3fi\n",realpart,imagepart); } else if(p>0) { x1=realpart+imagepart; x2=realpart-imagepart; printf("方程有两个实数解:"); printf("%.3f and %.3f\n",x1,x2); } else printf("方程只有一个实数解:%.3f\n",realpart); } }
