为了账号安全,请及时绑定邮箱和手机立即绑定

老哥们 问题又来了 求解啊 有什么错误在里面

老哥们 问题又来了 求解啊 有什么错误在里面

C
qq_难得糊涂_19 2017-03-04 19:54:15
#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;
}


查看完整回答
3 反对 回复 2017-03-04
  • 1 回答
  • 0 关注
  • 1160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信