#include<stdio.h>#include<math.h>int main(){ double a,b,c,x1,x2,d; scanf("%lf %lf %lf",&a,&b,&c); a*x^2+b*x+c=0; d=sqrt(b^2-8*a*c); if(b^2-8*a*c > 0) { printf("%.2lf,%.2lf",x1=(-b+d)/4/a,x2=(-b-d)/4/a); } else if(b^2-8*a*c = 0) { printf("%.2lf",x1=-b/a/4); } else { printf("no"); } return 0;}一元二次方程求解
1 回答
已采纳
习惯受伤
TA贡献885条经验 获得超1144个赞
问题有点多:
1、a*x^2+b*x+c=0; 这句不是一个正确的C语言语句,所以删掉这一行。
2、C语言中 ^ 表示按位异或运算,并不表示平方。平方可以用 x*x 这样实现,也可以用 cmath 库。
3、b^2-8*a*c = 0 这句里边的判断不正确,判断用 ==
来一段C++代码:
#include <iostream> #include <math.h> using namespace std; void calcResult(double a, double b, double c) { double d, dd, x1, x2; dd = b * b - 4 * a * c; //Δ = b^2-4ac //Δ = b^2-4ac≥0 时,x=[-b±根号(b^2-4ac)]/2a //无解的情况,负数不能开平方根 if (dd < 0) { cout << "此函数无解!" << endl; return; } //一个解的情况 if (dd == 0) { //x=-b/2a x1 = -b / 2 / a; cout << "此函数有1个解:x1 = " << x1 << endl; return; } //剩下的就是两个解的情况 d = sqrt(dd); x1 = (-b + d) / 2 / a; x2 = (-b - d) / 2 / a; cout << "此函数有2个解:x1 = " << x1 << ", x2 = " << x2 << endl; } int main() { double a, b, c; cout << "程序功能:计算一元二次方程 ax^2+bx+c=0" << endl; cout << "请输入变量 a 的值:" << endl; cin >> a; cout << "请输入变量 b 的值:" << endl; cin >> b; cout << "请输入变量 c 的值:" << endl; cin >> c; calcResult(a, b, c); return 0; }
- 1 回答
- 0 关注
- 1160 浏览
添加回答
举报
0/150
提交
取消