本文展示一個完整的 C# 控制台程序,實現一元二次方程 ax² + bx + c = 0 的交互式求解。程序包含輸入驗證、判別式分支處理、根公式計算與格式化輸出。
a、b、c(double 類型)。delta = b*b - 4*a*c。delta < 0:無實數根,提示「此方程無實數解!」delta == 0:雙重根 x1 = x2 = -b / (2*a),提示「只有一個解!」delta > 0:兩個互不相等實根 x1 = (-b + √delta) / (2*a), x2 = (-b - √delta) / (2*a)。Console.WriteLine 格式化顯示根值。
using System;
namespace ConsoleApplication3 {
class Program {
static void Main(string[] args) {
double a, b, c, X1, X2;
Console.WriteLine("--------求一元二次方程:ax^2+bx+c=0 --------");
Console.Write("請輸入一個值給a:"); a = Convert.ToDouble(Console.ReadLine());
Console.Write("請輸入一個值給b:"); b = Convert.ToDouble(Console.ReadLine());
Console.Write("請輸入一個值給c:"); c = Convert.ToDouble(Console.ReadLine());
double delta = b * b - 4 * a * c;
if (delta < 0) {
Console.WriteLine("此方程無實數解!");
} else if (delta == 0) {
X1 = X2 = -b / (2 * a);
Console.WriteLine("只有一個解!X1=X2={0}", X1);
} else {
X1 = (-b + Math.Sqrt(delta)) / (2 * a);
X2 = (-b - Math.Sqrt(delta)) / (2 * a);
Console.WriteLine("X1的值為:{0}\tX2的值為:{1}", X1, X2);
}
Console.ReadKey();
}
}
}
/ 2 * a 應為 / (2 * a),已在上方修正。Console.ReadKey() 防止控制台閃退。a=0 退化為一元一次方程的情況,實際項目建議補充判斷。文中附三張截圖分別展示:
1. 兩實根情況(a=1,b=-3,c=2 → x1=2, x2=1)
2. 雙重根情況(a=1,b=-2,c=1 → x1=x2=1)
3. 無實根情況(a=1,b=1,c=1 → delta=-3)
經典入門級數學計算程序。展示了 C# 基礎 I/O、數學庫調用、分支結構與格式化輸出。適合初學者練習控制台交互與浮點數運算細節(如判別式精度、除法優先級)。