求一元二次方程的根
来源:互联网 发布:excel 解析.xlsx java 编辑:程序博客网 时间:2024/05/01 06:50
题目来源:
本题目要求一元二次方程 a*x2+b*x+c=0 的根,结果保留2位小数。
输入格式:
输入在一行中给出3个浮点系数a, b, c,中间用空格分开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;3)如果方程只有一个根,则直接输出此根;4)如果系数都为0,则输出"Zero Equation";5)如果a和b为0,c不为0,则输出"Not An Equation"。
输入样例 1:
2.1 8.9 3.5
输出样例 1:
-0.44-3.80
输入样例 2:
1 2 3
输出样例 2:
-1.00+1.41i-1.00-1.41i
输入样例 3:
0 2 4
输出样例 3:
-2.00
输入样例 4:
0 0 0
输出样例 4:
Zero Equation
输入样例 5:
0 0 1
输出样例 5:
Not An Equation
代码:
import java.text.DecimalFormat;import java.text.ParseException;import java.util.Scanner;/* * */public class Main {public static void main(String[] args) throws ParseException {Scanner scanner = new Scanner(System.in);//是否是复数根boolean flag =false;//中间结果,保留b*b - 4*a*cdouble intermediateResult =0;//系数a b cdouble a ,b,c;a = scanner.nextDouble();b = scanner.nextDouble();c = scanner.nextDouble();//保留两位小数DecimalFormat df = new DecimalFormat("#0.00");//如果系数都为0if(a==0 && b==0 && c==0){System.out.println("Zero Equation");return ;}//如果a和b为0,c不为0if(a==0 && b==0 && c!=0){System.out.println("Not An Equation");return ;}//因为输出结果经常用到-b,-c,如果b,c=0,不转换成-0的话,会导致输出结果格式不正确//此处最容易出错,虽然结果是正确的,但是输出的0.00不能是-0.00,if(b==0) b=-0.0;if(c==0) c=-0.0;//一元一次方程if(a==0){System.out.println(df.format((-c)/b));}//一元二次方程else{//求b*b - 4*a*cintermediateResult = b*b - 4*a*c;//有实数根if(intermediateResult >=0){//只有一个实数根if(intermediateResult==0){System.out.println( df.format((-b)/(2*a)) );}//两个实数根else{intermediateResult=Math.sqrt(intermediateResult);//先输出大的根,再输出小的根if(a>0){System.out.println(df.format(( (-b)+intermediateResult )/(2*a)));System.out.println( df.format(( (-b)-intermediateResult )/(2*a)));}else {System.out.println( df.format(( (-b)-intermediateResult )/(2*a)));System.out.println(df.format(( (-b)+intermediateResult )/(2*a)));}}}//有复数根else{flag =true;//将b*b - 4*a*c转为正数,并开根号intermediateResult=Math.sqrt(Math.abs(intermediateResult));System.out.println( ( df.format((-b)/(2*a)))+"+"+df.format(intermediateResult/(2*a))+"i");System.out.println( ( df.format((-b)/(2*a)))+"-"+df.format(intermediateResult/(2*a))+"i");}}}}
参考:http://zhidao.baidu.com/question/560822757.html?qbl=relate_question_0&word=%C7%F3%D2%BB%D4%AA%B6%FE%B4%CE%B7%BD%B3%CC%B5%C4%B8%F9%20%B8%B4%CA%FD%B8%F9&optimi=4
0 0
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- 求一元二次方程的根
- JSTL 核心标签
- Sort List
- android message 的一些小异常
- 改变ActionBar中Tab字体的颜色和选中时下划线的颜色
- SQL函数设计之临时表的使用
- 求一元二次方程的根
- 黄金销售,铂金销售, 玉器钻石等零售, 老银楼让您高大上
- hive的内部表与外部表创建
- SQL基础(一一)--排序
- mssql 内外网不同端口访问
- 调度器(scheduler)
- web缓存
- 快捷物流,行李托运,长途搬家, 德港以上海为中心,辐射全国
- C 编译、链接、加载