MST

星途 面试题库

面试题:Rust枚举类型变体定义的基础应用

定义一个名为`Shape`的Rust枚举类型,它有三个变体:`Circle`,接受一个`f64`类型的半径参数;`Rectangle`,接受两个`f64`类型的参数分别表示长和宽;`Triangle`,接受三个`f64`类型的参数分别表示三条边的长度。然后编写一个函数,该函数接受`Shape`枚举类型作为参数,并根据不同的变体计算并返回图形的面积(面积计算公式:圆面积 = π * 半径²,矩形面积 = 长 * 宽,三角形面积使用海伦公式:s = (a + b + c) / 2,面积 = √(s * (s - a) * (s - b) * (s - c)) ,这里a, b, c为三角形三边长度)。
23.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::f64::consts::PI;
use std::fmt;
use std::ops::Mul;
use std::cmp::PartialOrd;
use std::convert::TryInto;

// 定义Shape枚举类型
enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
    Triangle(f64, f64, f64),
}

// 实现面积计算函数
fn calculate_area(shape: Shape) -> f64 {
    match shape {
        Shape::Circle(radius) => PI * radius * radius,
        Shape::Rectangle(length, width) => length * width,
        Shape::Triangle(a, b, c) => {
            let s = (a + b + c) / 2.0;
            (s * (s - a) * (s - b) * (s - c)).sqrt()
        }
    }
}

你可以使用以下方式调用这个函数:

fn main() {
    let circle = Shape::Circle(5.0);
    let rectangle = Shape::Rectangle(4.0, 6.0);
    let triangle = Shape::Triangle(3.0, 4.0, 5.0);

    println!("Circle area: {}", calculate_area(circle));
    println!("Rectangle area: {}", calculate_area(rectangle));
    println!("Triangle area: {}", calculate_area(triangle));
}