解题思路:

要求解此题,需要知道以下几点:

一、读懂题目意思,题目大意为:

用户输入a,b,c;  程序执行完后输出x1,x2


二、要得到x1,x2,需求出△值

△=b^2-4*a*c


三、△分为3种情况,每种情况不同,求得的x1,x2值不同

情况1:△>0:    x1=(-b+√△)/(2*a)      ;      x2=(-b-√△)/(2*a)         √:开根号,即√4=2

情况2:△=0: x1=x2=-b/(2*a)

情况3:△<0:   x1=(-b+√△*i)/(2*a)      ;      x2=(-b-√△*i)/(2*a)      使用时注意△<0,需把△取反变成△>0才可使用


了解到此三种情况后即可开始解题


注意事项:
1、开根号在c++中有函数可以实现:sqrt(a),即为给a开根号,但需要包含头文件#include<math.h>

2、由于输出要求,在定义变量时建议全部定义为float类型

3、在输出时需要保留小数点后3位,建议使用c语言输出方式

4、在函数dfs3()中,由于输出要求,建议使用本代码中的输出方式,由于解释起来比较复杂,还请自行理解


参考代码:

#include<iostream>

using namespace std;

#include<math.h>

void dfs1(float a, float b, float d)//情况1:△>0

{

float x1 = (-b + sqrt(d)) / (2 * a);//根据公式求值

float x2 = (-b - sqrt(d)) / (2 * a);

cout << "x1=";

printf("%.3f", x1);

cout << " x2=";

printf("%.3f", x2);

}

void dfs2(float a, float b)//情况2:△=0

{

float x1 = -b / (2 * a);//根据公式求值

float x2 = -b / (2 * a);

cout << "x1=";

printf("%.3f", x1);

cout << " x2=";

printf("%.3f", x2);

}

void dfs3(float a, float b, float d)//情况3:△<0

{

d = -d;

float x1 = -b / (2 * a);//求出前半部分值

float x2 = sqrt(d) / (2 * a);//求出后半部分值

printf("x1=%.3f+%.3fi", x1, x2);

printf(" x2=%.3f-%.3fi", x1, x2);

}

int main()

{

float a, b, c;

cin >> a >> b >> c;//拿到用户输入值

float d = pow(b, 2) - 4 * a * c;//求出△

//判断△

if (d > 0)

dfs1(a, b, d);

else if (d == 0)

dfs2(a, b);

else

dfs3(a, b, d);

return 0;

}



点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论