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

作者 刘继承

单位 河南工业大学

求ax2+bx+c=0的根。

输入格式:

在一行给出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

栈限制

8192 KB

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值