解题思路:
要求解此题,需要知道以下几点:
一、读懂题目意思,题目大意为:
用户输入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 人评分
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:793 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1114 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:906 |
printf基础练习2 (C语言代码)浏览:690 |
哥德巴赫曾猜测 (C语言代码)浏览:2560 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:597 |
1157题解浏览:769 |
妹子杀手的故事 (C语言代码)浏览:1152 |
陈教主的三角形 (C语言代码)浏览:1196 |
Pascal三角 (C语言代码)浏览:707 |