實驗3-1 求一元二次方程的根 (20 分) 《C語言程序設計實驗與習題指導(第3版)》


本題目要求一元二次方程的根,結果保留2位小數。

輸入格式:

輸入在一行中給出3個浮點系數a、b、c,中間用空格分開。

輸出格式:

根據系數情況,輸出不同結果:

1)如果方程有兩個不相等的實數根,則每行輸出一個根,先大后小;

2)如果方程有兩個不相等復數根,則每行按照格式“實部+虛部i”輸出一個根,先輸出虛部為正的,后輸出虛部為負的;

3)如果方程只有一個根,則直接輸出此根;

4)如果系數都為0,則輸出"Zero Equation";

5)如果a和b為0,c不為0,則輸出"Not An Equation"。

輸入樣例1:

2.1 8.9 3.5

輸出樣例1:

-0.44
-3.80

輸入樣例2:

1 2 3 

輸出樣例2:

-1.00+1.41i -1.00-1.41i 

輸入樣例3:

0 2 4 

輸出樣例3:

-2.00 

輸入樣例4:

0 0 0 

輸出樣例4:

Zero Equation 

輸入樣例5:

0 0 1 

輸出樣例5:

Not An Equation
按求根公式來,但注意純虛根不要在0前加負號。
代碼:
#include <stdio.h>
#include <math.h>
int main() {
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    if(a == 0 && b == 0 && c == 0) printf("Zero Equation\n");
    else if(a == 0 && b == 0 && c != 0) printf("Not An Equation\n");
    else if(a == 0) printf("%.2f\n",-c / b);
    else {
        double det = b * b - 4 * a * c,aa = a * 2;
        if(det == 0) printf("%.2f\n",-b / aa);
        else if(det > 0) printf("%.2f\n%.2f\n",(-b + sqrt(det)) / aa,(-b - sqrt(det)) / aa);
        else printf("%.2f+%.2fi\n%.2f-%.2fi\n",(b == 0 ? b : -b) / aa,sqrt(-det) / aa,(b == 0 ? b : -b) / aa,sqrt(-det) / aa);
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM