PTA 7-58 求一元二次方程的根

PTA 7-58 求一元二次方程的根

分数 20
作者 刘继承
单位 河南工业大学
在这里插入图片描述

输入格式:
在一行给出a(

=0)、b、c三个整数的值(a非)。

输出格式:
如果有实数根,在一行从小到大顺序输出两个根,保留小数点后2位。如果是虚数根,输出两个-1。

输入样例:
1 -2 1
4 6 1
4 3 1
输出样例:
在这里给出相应的输出。例如:

1.00 1.00
-1.31 -0.19
-1 -1

代码长度限制
16 KB
时间限制
100 ms
内存限制
64 MB

代码:

#include <stdio.h>
#include <math.h>
int main(void){
    //ax^2+bx+c=0
    double a, b, c, imaginary;    //定义方程二次方系数a, 一次放系数b, 常数c
    double x1, x2;    //定义方程的两个根x1, x2
    scanf("%lf %lf %lf",&a, &b, &c);
    imaginary = pow(b, 2) - (4.00 * a * c);    //德尔塔判别式
    if(a != 0){     //判断二次方系数是否为0
        if(imaginary >= 0){    //德尔塔判别式大于0有两个解
            x1 = ((-b) + sqrt(imaginary)) / (2.00 * a);    //第一个解
            x2 = ((-b) - sqrt(imaginary)) / (2.00 * a);    //第二个解
            printf("%.2lf %.2lf", x2, x1);    //输出两个解
        }else if(imaginary < 0){    //德尔塔判别式小于0无解
            printf("-1 -1");    //无解则输出-1 -1
        }
    }
    return 0;
}

解题思路:
step1:先求德尔塔判别式
step2:判断二次方系数是否为0
step3:判断德尔塔是否大于0
step4:用求根公式求解

归属知识点:
数学函数库
条件判断

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值