知识点
if-else 控制结构
if 条件控制
if 条件表达式{
//条件成立执行这里的代码
}
if-else 条件控制
if 条件表达式{
//条件成立执行这里的代码
}else{
//条件不成立执行这里的代码
}
if 条件表达式1{
//条件1成立执行这里的代码
}else if 条件表达式2{
//条件1不成立,条件2成立执行这里的代码
}else{
//条件2不成立执行这里的代码
}
一元二次方程组
一元二次方程的一般形式为:
a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0
在方程中,a
、b
和 c
是常数,其中
a
≠
0
a\neq0
a=0。一元二次方程的解可以通过使用求根公式得到:
x = − b ± b 2 − 4 a c 2 a x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} x=2a−b±b2−4ac
一元二次方程组通常形式如下:
a x 2 + b x + c = 0 d x 2 + e x + f = 0 \begin{align*} ax^2 + bx + c &= 0 \\ dx^2 + ex + f &= 0 \end{align*} ax2+bx+cdx2+ex+f=0=0
其中,a, b, c, d, e, f
是已知的常数。
这个方程组的解是满足两个方程的x
值。解的个数和类型取决于二次方程的判别式(在求根公式中的
b
2
−
4
a
c
\sqrt{b^2-4ac}
b2−4ac部分的值。判别式的三种可能情况如下:
- 如果判别式
大于 0
,方程有两个不相等的实数解。 - 如果判别式
等于 0
,方程有两个相等的实数解,也就是有一个重根。 - 如果判别式
小于 0
,方程有两个共轭的复数解。
Rust 编程
程序代码与注释
use std::io::{self, *};
fn main() {
let stdin = io::stdin();
for line in stdin.lock().lines() {
let ll = line.unwrap();
let numbers: Vec<&str> = ll.split(" ").collect();
if numbers.len() != 3 {
println!("请输入二元一次方程组的三个参数!");
continue;
}
let a = numbers[0].trim().parse::<f64>().unwrap_or(0.0);
let b = numbers[1].trim().parse::<f64>().unwrap_or(0.0);
let c = numbers[2].trim().parse::<f64>().unwrap_or(0.0);
cal_quadratic_equation(a, b, c);
}
}
/// # 功能
/// 计算一元二次方程组并打印结果
/// # 参数
/// * `a` - 平方项系数
/// * `b` - 一次方项系数
/// * `c` - 常数项
/// # 示例
/// 解二元一次方程 2x^2 + 7x + 1 = 0,
/// 预期结果为`x1=-3.35;x2=-0.15`
/// ```
/// cal_quadratic_equation(2.0, 7.0, 1.0);
/// ```
/// # 备注
/// * 打印精度为小数点后两位
/// * 当方程没有实数解时会打印虚数解(实部+虚部)
fn cal_quadratic_equation(a: f64, b: f64, c: f64) {
let delta: f64 = b * b - 4.0 * a * c; //判别式
if a == 0.0 {
println!("Not quadratic equation");
} else {
if delta == 0.0 {
println!("x1=x2={:.2}", -b / (2.0 * a));
} else if delta > 0.0 {
println!(
"x1={:.2};x2={:.2}",
(-b - delta.sqrt()) / (2.0 * a),
(-b + delta.sqrt()) / (2.0 * a)
);
} else if delta < 0.0 {
let real_quantity = -b / (2.0 * a); //实部
let imaginary_quantity = (-delta).sqrt() / (2.0 * a); //虚部
println!(
"x1={:.2}-{:.2}i;x2={:.2}+{:.2}i",
real_quantity, imaginary_quantity, real_quantity, imaginary_quantity
);
}
}
}