本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
大家好,我是洋哥。今天给大家带来的是每日一题——解一元二次方程。
题目要求
我们高中都学过一元二次方程,如今利用我们所学的编程知识能不能编写程序来帮我们解方程呢?快来试试吧。
求ax2+bx+c=0方程的根。a,b,c分别为函数的参数。
提示:Math.sqrt(num); sqrt指平方根。
建议用时:10-15分钟
难度:中等
知识点考察
这道题考察的就是Java程序流程控制。主要就是条件判断语句,新瓶装老酒,换了一个外套而已。
问题分析
第一,首先用输入语句将所要求的方程输入。
第二,先判断a的值是否为0,然后根据b2-4ac值得正情况做出不同的判断和操作(进入不同的条件语句中)。
第三,根据调用的数学函数,计算出相应的解。
相关知识点复习
如果a≠0,那么:
(1)当b2-4ac>0,则有两个解;
(2)当b2-4ac=0,则有一个解;
(3)当b2-4ac<0,则无解;
如果a=0,b≠0,那么
对于if-else条件语句的复习,之前有文章讲述过在此不多赘述。
代码实现
import java.util.Scanner;
class Exer5{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("一元二次方程:ax^2+bx+c=0");
System.out.print("请输入参数a:");
double a = input.nextDouble();
System.out.print("请输入参数b:");
double b = input.nextDouble();
System.out.print("请输入参数c:");
double c = input.nextDouble();
if(a!=0){
double temp = b*b - 4*a*c;
if(temp==0){
double x = -b/(2*a);
System.out.println("该方程是一元二次方法,有两个相同解:" + x);
}else if(temp>0){
double sqrt = Math.sqrt(temp);
double x1 = (-b+ sqrt)/(2*a);
double x2 = (-b- sqrt)/(2*a);
System.out.println("该方程是一元二次方法,两个不同解:" + x1 +"," + x2);
}else{
System.out.println("该方程是一元二次方法,在实数范围内无解!");
}
}else{
if(b!=0){
double x = -c/b;
System.out.println("该方程是一元一次方程,有一个解:" + x);
}else{
System.out.println("不是方程,是一个等式");
if(c == 0){
System.out.println("等式成立");
}else{
System.out.println("等式不成立");
}
}
}
}
}
总结和建议
这是一道利用编程知识解决数学问题的题目,这种情况很常见。关键就是要把数学语言转换成计算机语言,抽丝剥茧,找出核心关系表达式。