Skip to content

Latest commit

 

History

History
51 lines (44 loc) · 2.16 KB

daily-practice-1.md

File metadata and controls

51 lines (44 loc) · 2.16 KB

习题一

第一题

  1. 使用 if 检查 i32 类型的变量是否为正数、负数或零,并打印相应的信息。
  2. 使用 loop 编写一个无限循环,当循环次数达到10次时,使用 break退出循环。
  3. 使用 for 循环遍历 1888 的数字,并只打印出其中的偶数。

第二题

  1. 创建一个函数 take_onwership,它获取一个 String类型的参数,并打印出来,然后探索函数调用后原变量的状态;创建一个函数 borrow_string,它获取一个对 String的不可变引用,并打印出字符串的长度。
  2. 分别写出下面程序片断输出结果,并说明原因。
fn main() {
    let mut a = 10u32;
    let b = &mut a;
    *b = 20;
    let c = &a;
    
    println!("{b}"); 
}
fn main() {
    let mut a = 10u32;
    let b = &mut a;
    *b = 20;
    let c = &a;
    println!("{c}"); 
}
fn main() {
    let mut a = 10u32;
    let c = &a; 
    let b = &mut a;
    *b = 20;
    println!("{c}");
}

第三题

1.假设有一个结构体 Book,它包含一个对 String 的引用。编写一个带有生命周期注释的结构体,并解释为什么需要生命周期。 2.实现一个返回最长字符串切片的函数 编写一个函数 longest, 它接受两个字符的引用,并返回最长的字符串的引用。尝试调用 longest 函数,并处理可能出现的生命周期问题。

第四题

  1. 请定义一个Person结构体,它应该包括姓名、年龄和城市等字段。然后编写一个关联函数 new,用于根据给定的参数创建Person实例。
  2. Person结构体实现一个方法 introduce,该方法的作用是打印出一个介绍个人信息的语句。应能够清晰地表达出这个人的姓名、年龄和所在的城市。

第五题

定义一个名为 TrafficLight 的枚举,它应该包含红灯、黄灯、绿灯这三种状态。然后为TrafficLight 枚举实现一个方法 duration,该方法返回每种灯持续的时间(以秒为单位)。最后,使用 match 表达式来处理TrafficLight实例,根据不同的灯显示相应的行动指示。