解题思路:根据判别式(b^2-4ac)的结果分成三类讨论
注意事项:这里判别式<0时存在共轭复数根,复根的求法为x1,2=(-b±i√(4ac-b2))/2a
参考代码:
#include<iostream>
using namespace std;
#include<cmath> //包含sqrt函数
#include<iomanip> //包含小数点保留函数
//由于表示复根会存在i,所以将结果拆分
float term1(float a, float b, float c)
{
return -b / (2*a);
}
float term2(float a, float b, float c)
{
return sqrt(b * b -4*a*c)/ (2 * a);
}
float term3(float a, float b, float c)
{
return sqrt(4 * a * c -b *b ) / (2 * a);
}
int main()
{
float a, b, c;
cin >> a >> b >> c;
float term = b *b - 4 * a * c;
if (term > 0) //下行语句中setprecision函数用于控制小数点后的位数
cout << "x1=" << setprecision(3) << term1(a,b,c)+term2(a,b,c) << " " << "x2=" << setprecision(3) << term1(a, b, c) - term2(a, b, c);
if (term == 0)
cout << "x1=" << setprecision(3) << term1(a, b, c) + term2(a, b, c) << " " << "x2=" << setprecision(3) << term1(a, b, c) - term2(a, b, c);
if (term < 0)
cout << "x1=" <<setprecision(3)<< term1(a, b, c) <<"+" << setprecision(3) <<term3(a, b, c) << "i " << "x2=" << setprecision(3) << term1(a, b, c) <<"-" << setprecision(3) << term3(a, b, c) << "i ";
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复