#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 关注
- 1255 浏览
添加回答
举报
0/150
提交
取消
