題目描述
解一元二次方程ax^2+bx+c=0的解。
輸入格式
a,b,c的值。
輸出格式
輸出兩個解,按照大小順序輸出,一個解時需要打印兩次,不用考慮無解問題,保留兩位小數
樣例輸入
1 5 -2
樣例輸出
0.37 -5.37
代碼解析
-
首先,代碼通過
#include <stdio.h>
引入了標準輸入輸出庫,以便使用printf
和scanf
等輸入輸出函數。通過#include <math.h>
引入了數學庫,以便使用sqrt
函數計算平方根。 -
使用
#define delta b*b-4*a*c
定義了一個宏delta
,它代表一元二次方程判別式的值。判別式用于判斷一元二次方程的根的情況。 -
程序定義了
main
函數,這是C語言程序的入口點。main
函數的返回類型是int
,表示這個函數最終會返回一個整數值。 -
在
main
函數內部,首先定義了三個浮點數變量a
、b
和c
,它們分別代表一元二次方程的系數。 -
定義了兩個雙精度浮點數變量
x1
和x2
,它們將用于存儲方程的兩個解。 -
使用
scanf("%f%f%f", &a, &b, &c);
從標準輸入讀取三個浮點數,分別賦值給變量a
、b
和c
。 -
接著,使用一元二次方程的求根公式計算兩個解。對于一元二次方程 ax^2 + bx + c = 0ax2+bx+c=0,其兩個解可以通過下面的公式得到: x = \frac{-b \pm \sqrt{\Delta}}{2a}x=2a?b±Δ?? 其中,\DeltaΔ 是判別式,即
delta
宏所定義的表達式。x1
?存儲的是加上判別式平方根的解:(-b + sqrt(delta)) / (2 * a)
。x2
?存儲的是減去判別式平方根的解:(-b - sqrt(delta)) / (2 * a)
。
-
使用
printf("%.2f %.2f\n", x1, x2);
輸出兩個解,%.2f
格式說明符表示浮點數輸出時保留兩位小數。 -
最后,
main
函數返回0,表示程序正常結束。
源代碼
#include <stdio.h>
#include <math.h>
#define delta b*b-4*a*c
int main(void)
{float a, b, c;double x1, x2;scanf("%f%f%f", &a, &b, &c);x1 = (-b + sqrt(delta)) / (2 * a);x2 = (-b - sqrt(delta)) / (2 * a);printf("%.2f %.2f\n", x1, x2);return 0;
}