早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++基础题求助题目一:输入一个一元二次方程式ax2+bx+c=0(a0)的三个系数a,b,c,求它的根。输入三个数值a,b,c,其中a不等于0。如果有两个实根,一个实根和无根情况,分别则输出如下:Two

题目详情
C++基础题求助
题目一:
输入一个一元二次方程式 ax2+bx+c=0 (a<>0)的三个系数a,b,c,求它的根。
输入三个数值 a, b, c,其中a不等于0。
如果有两个实根,一个实根和无根情况,分别则输出如下:
Two different roots x1=?? , x2=??
Two same roots x=??
No real root
答案保证是整数,若有两个根则大者在前,且x1后面及x2前面均有一个空格。
输入:输入只有一行,包含三个不大于是1000的数a,b,c,其中a一定不为0
输出:输出只有一行,为根的情况,格式如题目中要求。
样例输入:1 3 -10
样例输出:Two different roots x1=2 , x2=-5
▼优质解答
答案和解析

简单的一个:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int a, b, c;
    scanf_s("%d%d%d", &a, &b, &c);
    if (a == 0 || a > 1000 || b > 1000 || c > 1000) {
        return 0;
    }
    int key = b*b -4*a*c;
    int r0, r1;
    
    if (key < 0) {
        printf("No real root");
        return 0;
    }
    r0 = (-b + sqrt(key)) / 2 * a;
    if (key == 0) {
        printf("Two same roots x= %d", r0);
    }
    else {
        r1 = (-b - sqrt(key)) / 2 * a;
        printf("Two different roots x1= %d , x2= %d ", r0, r1);
    }
    return 0;
}