MrSix


私信TA

用户名:1658530280

访问量:164337

签 名:

等  级
排  名 16
经  验 22386
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校 大连交通大学
专  业

  自我简介:

思路:如果b*b-4*a*c等于0,则两个根相等并等于负的2a分之b,如果b*b-4*a*c不等于0,则两个根不等,带入公式(-b-sqrt(b*b-4*a*c))/(2*a)


答案:

#include<stdio.h>
#include<math.h>
int main(){
	double x1,x2,a,b,c,d,t;
	scanf("%lf%lf%lf",&a,&b,&c);
	d=b*b-4*a*c;
	if(d>0||d<0){
		x1=(-b+sqrt(d))/(2*a);
		x2=(-b-sqrt(d))/(2*a);
	}
	else if(d==0)
		x1=x2=-b/(2*a);
	if(x1<x2){
		t=x1;
		x1=x2;
		x2=t;
	}
	printf("%0.2lf %0.2lf",x1,x2);
	return 0;
}

注:如果缺少了

if(x1<x2){
    t=x1;
    x1=x2;
    x2=t;
}

则会报错格式错误,保证了x1大于等于x2

 

0.0分

5 人评分

  评论区

按照大小顺序输出,一个解时需要打印两次
if(x1<x2){
    t=x1;
    x1=x2;
    x2=t;
}
不认真看很容易错
2021-05-30 17:40:49
此题解未考虑算法健壮性,修改后代码仅供参考:http://www.dotcpp.com/blog/3291.html
2017-11-27 21:41:46
  • «
  • 1
  • »