C#求解一元二次方程:计算根并保留两位小数
C#求解一元二次方程并格式化输出结果
本文提供了一个完整的C#代码示例,用于求解一元二次方程 ax²+bx+c=0 的根,并根据根的情况和题目要求进行格式化输出。
题目要求:
输入一行包含三个浮点数 a、b、c(用空格分隔),分别代表一元二次方程 ax²+bx+c=0 的系数。程序需要根据系数计算方程的根,并按照以下规则输出结果:
- 两个不相等的实数根:每行输出一个根,先大后小。2. 两个不相等的复数根:每行输出一个根,格式为'实部+虚部i',先输出虚部为正的,后输出虚部为负的。3. 只有一个根:直接输出此根。4. 系数都为0:输出'Zero Equation'。5. a和b为0,c不为0:输出'Not An Equation'。
**C#代码:**csharpusing System;
class Program{ static void Main(string[] args) { string[] input = Console.ReadLine().Split(' '); double a = double.Parse(input[0]); double b = double.Parse(input[1]); double c = double.Parse(input[2]);
if (a == 0 && b == 0 && c == 0) { Console.WriteLine('Zero Equation'); } else if (a == 0 && b == 0 && c != 0) { Console.WriteLine('Not An Equation'); } else if (a == 0) { double result = -c / b; Console.WriteLine($'{result:F2}'); } else { double delta = b * b - 4 * a * c;
if (delta > 0) { double x1 = (-b + Math.Sqrt(delta)) / (2 * a); double x2 = (-b - Math.Sqrt(delta)) / (2 * a); Console.WriteLine($'{Math.Max(x1, x2):F2}'); Console.WriteLine($'{Math.Min(x1, x2):F2}'); } else if (delta == 0) { double x = -b / (2 * a); Console.WriteLine($'{x:F2}'); } else { double realPart = -b / (2 * a); double imaginaryPart = Math.Sqrt(-delta) / (2 * a); Console.WriteLine($'{realPart:F2}+{imaginaryPart:F2}i'); Console.WriteLine($'{realPart:F2}-{imaginaryPart:F2}i'); } } }}
代码解释:
- 程序首先读取用户输入的三个系数 a、b、c。2. 然后,根据题目要求,使用多个条件判断语句处理不同的情况: - 当 a、b、c 都为 0 时,输出 'Zero Equation'。 - 当 a 和 b 都为 0,但 c 不为 0 时,输出 'Not An Equation'。 - 当 a 为 0 时,方程退化为一次方程,计算并输出结果。 - 当 a 不为 0 时,计算判别式 delta (Δ = b² - 4ac)。 - 若 delta > 0,方程有两个不相等的实数根,使用求根公式计算并按大小排序输出。 - 若 delta = 0,方程有一个实数根,计算并输出。 - 若 delta < 0,方程有两个不相等的复数根,计算实部和虚部,并按规定格式输出。
总结:
这段 C# 代码清晰地展示了如何求解一元二次方程,并根据不同的根的情况进行格式化输出。代码逻辑清晰易懂,注释详细,适合学习和参考。
原文地址: https://www.cveoy.top/t/topic/wAf 著作权归作者所有。请勿转载和采集!