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暂时可以类比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条件表达式相关推荐
- 【Rust指南】配置加速Cargo下载、更新依赖库|利用随机数编写Rust猜数游戏
文章目录 前言 一.Cargo配置问题与VSC的实用插件下载 1.解决Cargo拉取crates.io非常慢的问题 2.VSC自动管理Rust项目的实用插件 二.编写Rust 的猜数游戏 1.抓取 ...
- 猜数游戏(GAMBLER)
解题: 1.电脑要拿到一个用户不知道的数字 2.用户猜数,电脑告知数字大了,小了并在用户猜对后结束循环告知猜的次数(switch语句针对不同次数做出不同态度) 算法部分: 首先给电脑赋一个随机且有范围 ...
- 用Java实现猜数游戏:在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了” ;小于预设的数,显示“遗憾,太小了” ,如此循环,直至猜中该数,
猜数游戏 在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示"遗憾,太大了" ;小于预设的数,显示"遗憾,太小了" ,如此循环 ...
- c#实现猜数游戏(do-while和for循环实现方法)
方法一:for循环实现 using System.Runtime.InteropServices; namespace ConsoleApp1 {internal class Program{stat ...
- 猜数游戏 (do while循环
第一次发博客哈哈 记笔记了就当 rand()是一个随机数 由电脑随机产生的 因此由来猜数游戏 大小不一 但是由于后面加了限制条件 %其余100 所以随机数范围应该是0-99闭区间,又加了1,因而随机数 ...
- 7、猜数游戏。预设一个0~9之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大”;小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜 你猜中了”
a=6;b=0 print("欢迎来到猜数游戏") while a<b or a>b:b=int(input("请在0~9之间参一个数:"))if ...
- 猜数游戏(实现) 后附源码
亲爱的玩家,在初学C语言的阶段,您有没有预想过用C语言来实现一个猜数游戏呢? 如果有,请允许我来打开您的思路. 思路: 1.系统随机生成一个1--100的随机数,并在本轮游戏中不改变大小. 2.您可以 ...
- python猜数游戏在程序中预设一个_一道Python简单程序结构练习题
1.猜数游戏. 在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜数字,如果大于预设的数, 显示"遗憾,太大了":如果小于预设的数,显示"遗憾,太小了": ...
- 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计
课程设计的目的及意义 目的:通过本次课程设计,可以使我进一步认识MATLAB理论方法和实际意义,对理论知识进行必要实践.培养我们设计和仿真的基本能力,以便最终和生产实践以及其他科学结合. 意义: 1. ...
最新文章
- python打开指定文件-python打包压缩、读取指定目录下的指定类型文件
- excel怎么设置密码保护?Excel文件添加密码保护教程
- java 异常 规范_java 异常规范
- android复制图片,android图像保存到res / drawable文件夹[复制]
- vba上传文件到ftp服务器指定目录下面
- 谷歌、脸书、魔兽世界都在用!InnoDB是什么?有哪些关键特性?
- python虚拟环境中安装diango_python项目部署之 django虚拟环境
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)C. Voltage Keepsake
- oracle使用索引和不使用索引性能分析
- 为什么属龙的有二婚命_为什么属龙的有二婚命 一生婚姻运势详解
- python源码学习(七)——String对象
- jmeter性能测试之录制脚本
- 图论及其应用:第二次作业
- Gif表情包在线制作小程序
- 模拟信号幅度调制之AM
- IntelliJ IDEA 在方法大括号中{}点击回车多出一个},如何取消
- 如何识别一个网站是正规合法的网站
- 阿里云通过链接下载附件
- 京东轮播图片的静态页面CSS3
- python外卖点餐系统毕业设计开题报告
热门文章
- Excel拼接字符串技巧
- 构建php互动页面,第5章+构建PHP互动网页.ppt
- api可以主动采集用户数据吗_数据采集方式有哪些,都有什么特点?
- 前端基础-html-合并单元格
- unity shader 光效半透 (更新中)
- pi节点0.4.7 incoming connections一直为0的解决方案
- 无参构造方法和有参构造方法的调用
- python爬虫工程师考试科目一_一个Python爬虫工程师的修养
- 手机客户端数据传输加密设计
- jozj5945. 【NOIP2018模拟11.02】昆特牌