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

目录

一.数据类型

(一).基础类型

(二).进制

(三).复合类型 

①tuple

②数组

二.函数

三.循环和if

(一).if

(二).loop

(三).while

(四).for

四.猜数游戏


一.数据类型

(一).基础类型

类型 含义 类型 含义
i8 8位int u8 无符号8位int
i32 32位int u32 无符号~
i64 64位int u64 无符号~
i128 128位int u128 无符号~
isize 与机器位数有关 usize 无符号~
f32 32位浮点型 f64 64位浮点型
str 字符串类型 String 类比c++STL中string

(二).进制

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

(三).复合类型 

①tuple

类比c语言struct。

使用方式:

fn main() {
    let st:(i32, u32, String, f64) = (-500, 500, String::from("hello Rust"), 3.14);
    println!("{}", st.0);
    println!("{}", st.2);

    let (x, y, z, w) = st.clone();//深拷贝
    println!("{}", z);
}

②数组

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

使用方式,大致4种:

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

二.函数

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

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

返回值:

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

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

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

fn main() {
    let ret = sum(1, 2);
    println!("{}", ret);
}

fn sum(a: i32, b: i32) -> i32
{
    println!("进入sum函数");
    a + b
}

三.循环和if

(一).if

使用方式与C语言类似。

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

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

例:

fn main() {
    let i = 3;
    if (i == 0) {}//正确 
    if i == 3 {}//正确
    if i {}//错误
}

(二).loop

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

fn main() {
    let mut num = 5;
    let ret = loop{
        if num == 0 {
            break String::from("Hello Rust");
        }
        num -= 1;
    };
    println!("{}", ret);
}

(三).while

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

fn main() {
    let mut num = 5;
    while num > 0{
        println!("{}", num);
        num -= 1;
    }
}

(四).for

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

/* 
(1..6)是一个range类型,范围是左闭右开,
.rev()是该类型的一个方法,用于反转range。
*/
fn main() {
    for i in (1..6).rev(){
        println!("{}", i);
    }

    let arr:[i32;5] = [1, 2, 3, 4, 5];
    for i in arr.iter(){
        println!("{}", i);
    }
}

四.猜数游戏

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

use std::io;
use rand::Rng;
use std::cmp::Ordering;
fn main()
{
    loop{
        let mut Rand_Num = rand::thread_rng().gen_range(1..101);//获取随机数
        loop{
            println!("请猜一个数字");
            let mut guess = String::new();
            io::stdin().read_line(&mut guess);
            //match暂时可以类比switch
            let guess: u32 = match guess.trim().parse(){ //判断输入数字是否是u32类型
                Ok(num) => num,//是u32,num给guess
                Err(_) => continue, //不是,更新输入
            };

            match guess.cmp(&Rand_Num){ //数字比较
                Ordering::Less=>println!("小了"),
                Ordering::Greater=>println!("大了"),
                Ordering::Equal=>{
                    println!("正确,就是{}", Rand_Num);
                    break;
                }
            }
        }

        println!("是否继续玩? y/n");
        let mut key = String::new();
        io::stdin().read_line(&mut key);
        match key.trim().to_lowercase().as_str(){//string转成str类型
            "y" => continue,
            "n" => break,
            &_ => todo!(),//异常退出
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_61857742/article/details/128026838