每日一题——解一元二次方程

170 阅读2分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
大家好,我是洋哥。今天给大家带来的是每日一题——解一元二次方程。

题目要求

我们高中都学过一元二次方程,如今利用我们所学的编程知识能不能编写程序来帮我们解方程呢?快来试试吧。

求ax2+bx+c=0方程的根。a,b,c分别为函数的参数。

提示:Math.sqrt(num);  sqrt指平方根。

 

建议用时:10-15分钟

难度:中等

 

知识点考察

这道题考察的就是Java程序流程控制。主要就是条件判断语句,新瓶装老酒,换了一个外套而已。

 

 

 

问题分析

第一,首先用输入语句将所要求的方程输入。

第二,先判断a的值是否为0,然后根据b2-4ac值得正情况做出不同的判断和操作(进入不同的条件语句中)。

第三,根据调用的数学函数,计算出相应的解。

 

 

 

相关知识点复习

如果a≠0,那么:

(1)当b2-4ac>0,则有两个解;

image.png  

(2)当b2-4ac=0,则有一个解;

image.png  

(3)当b2-4ac<0,则无解;

如果a=0,b≠0,那么

image.png  

对于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("等式不成立");
      }
      }
      }
      }
}

 

总结和建议

这是一道利用编程知识解决数学问题的题目,这种情况很常见。关键就是要把数学语言转换成计算机语言,抽丝剥茧,找出核心关系表达式。