ganmu


私信TA

用户名:dotcpp0726067

访问量:3468

签 名:

等  级
排  名 1522
经  验 2809
参赛次数 0
文章发表 104
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

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

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

用户输入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 人评分

  评论区

  • «
  • »