利用C語言進行常見的數學運算:一元二次方程求根

林大官人995發表於2024-04-18

從鍵盤輸入a, b, c的值,程式設計計算並輸出一元二次方程ax2 + bx + c = 0的根 並保留兩位小數

#include <stdio.h>                                                                        //使用printf,scanf函式
#include <math.h>                                                                       //使用sqrt(開平方)函式
int main() 
{
    float a, b, c;                                                                               //定義浮點型變數,防止後續除法運算時,計算機截掉小數部分
    float x1, x2;
    while (scanf("%f %f %f", &a, &b, &c) != EOF)                         //迴圈判斷本次輸入是否結束,用於多行輸入
    {
        float der = (b * b - 4 * a * c);      //定義數學中德爾塔
        if (a == 0)printf("Not quadratic equation");                        //判斷是否是一元二次方程
        else {
            if (der > 0) {
                x1 = (-b) / (2 * a) - (sqrt(der) / (2 * a));      
                x2 = (-b) / (2 * a) + (sqrt(der) / (2 * a));
                printf("x1=%.2f;x2=%.2f\n", x1, x2);
            } 
                else if (der == 0) {
                x1 = x2 = (-b) / (2 * a);
                {
                    if (x1 == (-0.00)) {
                        printf("x1=x2=0.00\n");
                    }
                    else {
                        printf("x1=x2=%.2f\n", x1);
                    }
                }
            } 
            else if (der < 0) {
                float s, y;
                s = (-b) / (2 * a);
                y = sqrt(-der) / (2 * a);                                                   //計算機無法對負數進行開平方運算
                printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", s, y, s, y);       //輸出時應手動新增數學意義上的虛部識別符號‘i’
            }
        }
    }
    return 0;
}

相關文章