目录

一.数据类型

(一).基础类型

(二).进制

(三).复合类型

①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暂时可以类比switchlet guess: u32 = match guess.trim().parse(){ //判断输入数字是否是u32类型Ok(num) => num,//是u32,num给guessErr(_) => 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!(),//异常退出}}
}

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

  1. 【Rust指南】配置加速Cargo下载、更新依赖库|利用随机数编写Rust猜数游戏

    文章目录   前言 一.Cargo配置问题与VSC的实用插件下载 1.解决Cargo拉取crates.io非常慢的问题 2.VSC自动管理Rust项目的实用插件 二.编写Rust 的猜数游戏 1.抓取 ...

  2. 猜数游戏(GAMBLER)

    解题: 1.电脑要拿到一个用户不知道的数字 2.用户猜数,电脑告知数字大了,小了并在用户猜对后结束循环告知猜的次数(switch语句针对不同次数做出不同态度) 算法部分: 首先给电脑赋一个随机且有范围 ...

  3. 用Java实现猜数游戏:在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了” ;小于预设的数,显示“遗憾,太小了” ,如此循环,直至猜中该数,

    猜数游戏 在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示"遗憾,太大了" ;小于预设的数,显示"遗憾,太小了" ,如此循环 ...

  4. c#实现猜数游戏(do-while和for循环实现方法)

    方法一:for循环实现 using System.Runtime.InteropServices; namespace ConsoleApp1 {internal class Program{stat ...

  5. 猜数游戏 (do while循环

    第一次发博客哈哈 记笔记了就当 rand()是一个随机数 由电脑随机产生的 因此由来猜数游戏 大小不一 但是由于后面加了限制条件 %其余100 所以随机数范围应该是0-99闭区间,又加了1,因而随机数 ...

  6. 7、猜数游戏。预设一个0~9之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大”;小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜 你猜中了”

    a=6;b=0 print("欢迎来到猜数游戏") while a<b or a>b:b=int(input("请在0~9之间参一个数:"))if ...

  7. 猜数游戏(实现) 后附源码

    亲爱的玩家,在初学C语言的阶段,您有没有预想过用C语言来实现一个猜数游戏呢? 如果有,请允许我来打开您的思路. 思路: 1.系统随机生成一个1--100的随机数,并在本轮游戏中不改变大小. 2.您可以 ...

  8. python猜数游戏在程序中预设一个_一道Python简单程序结构练习题

    1.猜数游戏. 在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜数字,如果大于预设的数, 显示"遗憾,太大了":如果小于预设的数,显示"遗憾,太小了": ...

  9. 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计

    课程设计的目的及意义 目的:通过本次课程设计,可以使我进一步认识MATLAB理论方法和实际意义,对理论知识进行必要实践.培养我们设计和仿真的基本能力,以便最终和生产实践以及其他科学结合. 意义: 1. ...

最新文章

  1. python打开指定文件-python打包压缩、读取指定目录下的指定类型文件
  2. excel怎么设置密码保护?Excel文件添加密码保护教程
  3. java 异常 规范_java 异常规范
  4. android复制图片,android图像保存到res / drawable文件夹[复制]
  5. vba上传文件到ftp服务器指定目录下面
  6. 谷歌、脸书、魔兽世界都在用!InnoDB是什么?有哪些关键特性?
  7. python虚拟环境中安装diango_python项目部署之 django虚拟环境
  8. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)C. Voltage Keepsake
  9. oracle使用索引和不使用索引性能分析
  10. 为什么属龙的有二婚命_为什么属龙的有二婚命 一生婚姻运势详解
  11. python源码学习(七)——String对象
  12. jmeter性能测试之录制脚本
  13. 图论及其应用:第二次作业
  14. Gif表情包在线制作小程序
  15. 模拟信号幅度调制之AM
  16. IntelliJ IDEA 在方法大括号中{}点击回车多出一个},如何取消
  17. 如何识别一个网站是正规合法的网站
  18. 阿里云通过链接下载附件
  19. 京东轮播图片的静态页面CSS3
  20. python外卖点餐系统毕业设计开题报告

热门文章

  1. Excel拼接字符串技巧
  2. 构建php互动页面,第5章+构建PHP互动网页.ppt
  3. api可以主动采集用户数据吗_数据采集方式有哪些,都有什么特点?
  4. 前端基础-html-合并单元格
  5. unity shader 光效半透 (更新中)
  6. pi节点0.4.7 incoming connections一直为0的解决方案
  7. 无参构造方法和有参构造方法的调用
  8. python爬虫工程师考试科目一_一个Python爬虫工程师的修养
  9. 手机客户端数据传输加密设计
  10. jozj5945. 【NOIP2018模拟11.02】昆特牌