• Rust——猜数游戏、数据类型、函数、循环和if条件表达式


    目录

    一.数据类型

    (一).基础类型

    (二).进制

    (三).复合类型 

    ①tuple

    ②数组

    二.函数

    三.循环和if

    (一).if

    (二).loop

    (三).while

    (四).for

    四.猜数游戏


    一.数据类型

    (一).基础类型

    类型含义类型含义
    i88位intu8无符号8位int
    i3232位intu32无符号~
    i6464位intu64无符号~
    i128128位intu128无符号~
    isize与机器位数有关usize无符号~
    f3232位浮点型f6464位浮点型
    str字符串类型String类比c++STL中string

    (二).进制

    进制形式
    10进制20
    2进制0b0001 0100
    8进制0o24
    16进制0x14

    (三).复合类型 

    ①tuple

    类比c语言struct

    使用方式:

    1. fn main() {
    2. let st:(i32, u32, String, f64) = (-500, 500, String::from("hello Rust"), 3.14);
    3. println!("{}", st.0);
    4. println!("{}", st.2);
    5. let (x, y, z, w) = st.clone();//深拷贝
    6. println!("{}", z);
    7. }

    ②数组

    既可以接收i32之类,也可以接收String之类类型。

    使用方式,大致4种:

    1. let arr1 = [1, 2, 3, 4];
    2. let arr2 = ["hello", "Rust", "World"];
    3. // [类型; 个数]
    4. let arr3:[String; 3] = [String::from("hello"), String::from("Rust"), String::from("World")];
    5. // [数据;个数]
    6. let arr4 = [3;5];//let arr4 = [3, 3, 3, 3, 3];

    二.函数

    fn是函数的关键字,用以声明函数。

    Rust不关心函数声明位置,在调用位置之后也可以。

    返回值:

    有返回值时,“{”前必须加"-> 返回类型"

    Rust不用特意写return返回,默认函数最后一个函数表达式作为返回,必须没有分号,如果最后一句带有分号相当于不返回任何数据。

    也可以使用return来显式返回。

    1. fn main() {
    2. let ret = sum(1, 2);
    3. println!("{}", ret);
    4. }
    5. fn sum(a: i32, b: i32) -> i32
    6. {
    7. println!("进入sum函数");
    8. a + b
    9. }

    三.循环和if

    (一).if

    使用方式与C语言类似。

    if在使用时可以不加括号"()"。

    判断条件必须是bool类型,不支持隐式类型转换。

    例:

    1. fn main() {
    2. let i = 3;
    3. if (i == 0) {}//正确
    4. if i == 3 {}//正确
    5. if i {}//错误
    6. }

    (二).loop

    loop默认死循环,直到遇见break语句时跳出循环,并可以返回一个值。 

    1. fn main() {
    2. let mut num = 5;
    3. let ret = loop{
    4. if num == 0 {
    5. break String::from("Hello Rust");
    6. }
    7. num -= 1;
    8. };
    9. println!("{}", ret);
    10. }

    (三).while

    使用与C语言类似,但是没有"()"。

    1. fn main() {
    2. let mut num = 5;
    3. while num > 0{
    4. println!("{}", num);
    5. num -= 1;
    6. }
    7. }

    (四).for

    for的使用与C++范围for类似,同样不加"()"。

    1. /*
    2. (1..6)是一个range类型,范围是左闭右开,
    3. .rev()是该类型的一个方法,用于反转range。
    4. */
    5. fn main() {
    6. for i in (1..6).rev(){
    7. println!("{}", i);
    8. }
    9. let arr:[i32;5] = [1, 2, 3, 4, 5];
    10. for i in arr.iter(){
    11. println!("{}", i);
    12. }
    13. }

    四.猜数游戏

    随机生成一个数字供玩家猜测,直到猜中为止,并提示玩家是否继续玩。

    1. use std::io;
    2. use rand::Rng;
    3. use std::cmp::Ordering;
    4. fn main()
    5. {
    6. loop{
    7. let mut Rand_Num = rand::thread_rng().gen_range(1..101);//获取随机数
    8. loop{
    9. println!("请猜一个数字");
    10. let mut guess = String::new();
    11. io::stdin().read_line(&mut guess);
    12. //match暂时可以类比switch
    13. let guess: u32 = match guess.trim().parse(){ //判断输入数字是否是u32类型
    14. Ok(num) => num,//是u32,num给guess
    15. Err(_) => continue, //不是,更新输入
    16. };
    17. match guess.cmp(&Rand_Num){ //数字比较
    18. Ordering::Less=>println!("小了"),
    19. Ordering::Greater=>println!("大了"),
    20. Ordering::Equal=>{
    21. println!("正确,就是{}", Rand_Num);
    22. break;
    23. }
    24. }
    25. }
    26. println!("是否继续玩? y/n");
    27. let mut key = String::new();
    28. io::stdin().read_line(&mut key);
    29. match key.trim().to_lowercase().as_str(){//string转成str类型
    30. "y" => continue,
    31. "n" => break,
    32. &_ => todo!(),//异常退出
    33. }
    34. }
    35. }

  • 相关阅读:
    C语言——经典200道实例(11-15)
    Codeforces Round #803 (Div. 2)(A-D)
    蓝桥等考Python组别八级004
    《HelloGitHub》第 84 期
    网络编程之聊天室(一)
    Python数据结构与算法6
    微型计算机原理1
    学物理的计算机不错是什么体验
    基于HTML5的在线幻灯片编辑演示系统
    MFC-GetAdaptersAddresses获取网卡信息
  • 原文地址:https://blog.csdn.net/weixin_61857742/article/details/128026838