從鍵盤輸入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;
}