题目 1028: [编程入门]自定义函数求一元二次方程
时间限制: 1Sec 内存限制: 128MB
题目描述
求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。
从主函数输入a、b、c的值。
输入格式
a b c
输出格式
x1=? x2=?
样例输入
4 1 1
样例输出
x1=-0.125+0.484i x2=-0.125-0.484i
分析
解题思路:
一元二次方程
只含有一个未知数(一元),并且未知数项的最高次数是2(二次)的整式方程叫做一元二次方程。
一般式:ax²+bx+c=0(a≠0)。
其中ax²叫作二次项,a是二次项系数;bx叫作一次项,b是一次项系数;c叫作常数项
求根公式:
利用一元二次方程根的判别式可以判断方程的根的情况
▲ = b² - 4ac
一元二次方程的根与根的判别式 有如下关系:
① 当 ▲ > 0 时,方程有两个不相等的实数根;
② 当 ▲ = 0 时,方程有两个相等的实数根;
③ 当 ▲ < 0 时,方程无实数根,但有2个共轭复根
题解
#include<stdio.h>
#include<math.h>
void d0();
void d1();
void d2();
double p,q,r;//定义全局变量
int main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
p=b*b-4*a*c;
q=(-b)/(2*a);
r=sqrt(fabs(p))/(2*a);
if(p<0){
d0();
}
if(p==0){
d1();
}
if(p>0){
d2();
}
return 0;
}
void d0(){
printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",q,r,q,r);
}
void d1(){
printf("x1=%.3lf x2=%.3lf",q+r,q-r);
}
void d2(){
printf("x1=%.3lf x2=%.3lf",q+r,q-r);
}