当前位置: 首页 > news >正文

rust-强化练习

钓鱼不打窝,钓的也不多

语言只靠看不行,还得练,下面是AI生成的一些题目,后续直接肝LeeCode,一举2得

1、猜数字

描述:创建一个简单的猜数字游戏,程序会随机生成一个数字,玩家需要猜出这个数字是多少。程序会给出提示,告诉玩家猜的数字是大了还是小了
use std::cmp::Ordering;
use std::io::stdin;
use rand::{Rng};
fn main() {'outer: loop {let rand_number = rand::thread_rng().gen_range(1..=100);loop {println!("please input one number:");let mut guess = String::new();stdin().read_line(&mut guess).expect("error");let number = match guess.trim().parse::<i32>() {Ok(num) => num,Err(_) => {println!("please input number");continue;}};match number.cmp(&rand_number) {Ordering::Less => {println!("too small")}Ordering::Equal => {println!("you win current number is {}", rand_number);break;}Ordering::Greater => {println!("too big")}}}println!("you can choose 'y' to continue ");let mut flag = String::new();stdin().read_line(&mut flag).expect("input error");if !flag.trim().eq("y") { break 'outer; }}println!("game over!")
}

2、计算器

描述:编写一个简单的计算器程序,支持加法、减法、乘法和除法运算。用户输入两个数字和一个操作符,程序输出运算结果。
use std::io::stdin;
use std::str::FromStr;/**描述:编写一个简单的计算器程序,支持加法、减法、乘法和除法运算。用户输入两个数字和一个操作符,程序输出运算结果。*/fn main() {loop {//  输入数字let mut input_number = String::new();stdin().read_line(&mut input_number).expect("input error");let number = parse_number(&input_number);// 输入运算符let mut operator = String::new();stdin().read_line(&mut operator).expect("input error");// 输入数字2let mut input_number = String::new();stdin().read_line(&mut input_number).expect("input error");let number2 = parse_number(&input_number);// 计算match (number, number2) {(Ok(n1), Ok(n2)) => {match calculate(n1, n2, &operator) {Ok(data) => println!("{}{}{}={}", n1, operator.trim(), n2, data),Err(e) => println!("calc error {}", e)}}_ => println!("source number is none")}println!("you can choose 'n' to end ");let mut flag = String::new();stdin().read_line(&mut flag).expect("input error");if flag.trim().eq("n") {break;}}
}/*** 数据计算*/
fn calculate(number: f32, number2: f32, operator: &str) -> Result<f32, &str> {match operator.trim() {"+" => Ok(number + number2),"-" => Ok(number - number2),"*" => Ok(number * number2),"/" => {if number2.abs() > f32::EPSILON {Ok(number / number2)} else {Err("denominator should not be zero")}}_ => Err("unsupported")}
}/*** 转换数字*/
fn parse_number<T: FromStr>(s: &str) -> Result<T, T::Err> {s.trim().parse::<T>()
}

3、单词计数器

描述:编写一个程序,统计给定字符串中每个单词出现的次数。忽略大小写,输出结果按照单词出现次数从高到低排序。

代码还能优化一下

use std::collections::HashMap;
use std::io::stdin;
fn main() {//  输入数字let mut map = HashMap::new();let mut input_string = String::new();stdin().read_line(&mut input_string).expect("input error");// 统计每个单词的出现次数for x in input_string.split_whitespace() {let count = map.entry(x.to_string()).or_insert(0);*count += 1;}let mut vec:Vec<_> = map.iter().collect();vec.sort_by(|entry1,entry2| entry1.1.cmp(entry2.1).reverse());for (key, value) in vec {println!("{}={}", key, value)}
}

4、斐波那契数列

描述:编写一个函数,生成指定长度的斐波那契数列。斐波那契数列的定义是:前两个数为 0 和 1,之后的每个数是前两个数之和。

提示:

  • 使用递归或迭代 实现。
  • 处理边界条件(如长度为 0 或 1 的情况)。

5、最长单词

描述:编写一个函数,接受一个字符串的引用,并返回这个字符串中最长的单词。

6、矩形面积

描述:定义一个结构体 Rectangle,包含两个字段 width 和 height。为这个结构体实现一个方法 area,计算矩形的面积。

7、多边形面积(方法和函数)

描述:定义一个枚举 Shape,包含 Circle、Square 和 Rectangle 三种形状。为每种形状实现一个方法 area,计算它们的面积。

8、命令行参数解析

描述:编写一个程序,接受命令行参数并输出这些参数。例如,运行 cargo run arg1 arg2 arg3 应该输出 arg1 arg2 arg3。

9、文件操作

描述:编写一个程序,读取一个文本文件的内容,并将其写入到另一个文件中。

10、多线程

描述:编写一个程序,启动多个线程,每个线程打印一个独特的消息。

相关文章:

rust-强化练习

钓鱼不打窝&#xff0c;钓的也不多 语言只靠看不行&#xff0c;还得练&#xff0c;下面是AI生成的一些题目&#xff0c;后续直接肝LeeCode,一举2得 1、猜数字 描述&#xff1a;创建一个简单的猜数字游戏&#xff0c;程序会随机生成一个数字&#xff0c;玩家需要猜出这个数字是…...

TF-IDF算法

TF-IDF算法详解 一、TF-IDF算法概述 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;算法是一种常用于信息检索和文本挖掘的加权技术。其基本思想是通过评估一个词在文档中的重要性&#xff0c;来确定这个词在文档集合或语料库中的权重。TF-IDF算法…...

R语言数据分析案例29-基于ARIMA模型的武汉市房价趋势与预测研究

一、选题背景 房地产行业对于国民经济和社会及居民的发展和生活具有很大的影响&#xff0c;而房价能够体现经济运转的好坏&#xff0c;因而房价的波动牵动着开发商和购房者的关注&#xff0c;城市房价预测是一个研究的热点问题&#xff0c;研究房价对民生问题具有重要意义。 …...

面试-NLP八股文

机器学习 交叉熵损失&#xff1a; L − ( y l o g ( y ^ ) ( 1 − y ) l o g ( 1 − ( y ^ ) ) L-(ylog(\hat{y}) (1-y)log(1-(\hat{y})) L−(ylog(y^​)(1−y)log(1−(y^​))均方误差&#xff1a; L 1 n ∑ i 1 n ( y i − y ^ i ) 2 L \frac{1}{n}\sum\limits_{i1}^{n}…...

数据仓库之离线数仓

离线数据仓库&#xff08;Offline Data Warehouse&#xff09;是一种以批处理方式为主的数据仓库系统&#xff0c;旨在收集、存储和分析大量历史数据。离线数据仓库通常用于定期&#xff08;如每日、每周、每月&#xff09;更新数据&#xff0c;以支持各种业务分析、报表生成和…...

Mybatis源码解析

MybatisAutoConfiguration或者MybatisPlusAutoConfiguration核心作用是初始化工厂类SqlSessionFactory&#xff0c;其中包含属性interceptors、MapperLocations、TypeAliasesPackage、TypeEnumsPackage、TypeHandlers等。 MybatisAutoConfiguration自动装配类是由依赖&#xf…...

前端学习CSS之神奇的块浮动

在盒子模型的基础上就可以对网页进行设计 不知道盒子模型的可以看前面关于盒子模型的内容 而普通的网页设计具有一定的原始规律,这个原始规律就是文档流 文档流 标签在网页二维平面内默认的一种排序方式,块级标签不管怎么设置都会占一行,而同一行不能放置两个块级标签 行级…...

【Java】内部类、枚举、泛型

目录 1.内部类1.1概述1.2分类1.3匿名内部类(重点) 2.枚举2.1一般枚举2.2抽象枚举2.3应用1&#xff1a;用枚举写单例2.4应用2&#xff1a;标识常量 3.泛型3.1泛型认识3.2泛型原理3.3泛型的定义泛型类泛型接口泛型方法 3.4泛型的注意事项 1.内部类 1.1概述 内部类&#xff1a;指…...

LabVIEW电子类实验虚拟仿真系统

开发了基于LabVIEW开发的电子类实验虚拟仿真实验系统。该系统通过图形化编程方式&#xff0c;实现了复杂电子实验操作的虚拟化&#xff0c;不仅提高了学生的操作熟练度和学习兴趣&#xff0c;而且通过智能评价模块提供即时反馈&#xff0c;促进教学和学习的互动。 项目背景 在…...

SVM支持向量机

SVM的由来和概念 间隔最大化是找最近的那个点的距离’ 之前我们学习的都是线性超平面,现在我们要将超平面变成圈 对于非线性问题升维来解决 对于下图很难处理,我们可以将棍子立起来,然后说不定red跑到左边了,green跑到右边了(可能增加了某种筛选条件导致两个豆子分离)(只是一种…...

【Unity】RPG2D龙城纷争(二)关卡、地块

更新日期&#xff1a;2024年6月12日。 项目源码&#xff1a;后续章节发布 索引 简介地块&#xff08;Block&#xff09;一、定义地块类二、地块类型三、地块渲染四、地块索引 关卡&#xff08;Level&#xff09;一、定义关卡类二、关卡基础属性三、地块集合四、关卡初始化五、关…...

mediamtx流媒体服务器测试

MediaMTX简介 在web页面中直接播放rtsp视频流&#xff0c;重点推荐&#xff1a;mediamtx&#xff0c;不仅仅是rtsp-CSDN博客 mediamtx github MediaMTX(以前的rtsp-simple-server)是一个现成的和零依赖的实时媒体服务器和媒体代理&#xff0c;允许发布&#xff0c;读取&…...

C# 循环

C# 循环 在编程中&#xff0c;循环是一种控制结构&#xff0c;它允许我们重复执行一段代码多次。C# 提供了几种循环机制&#xff0c;以适应不同的编程需求。本文将详细介绍 C# 中常用的几种循环类型&#xff0c;包括 for 循环、while 循环、do-while 循环和 foreach 循环&…...

PHP杂货铺家庭在线记账理财管理系统源码

家庭在线记帐理财系统&#xff0c;让你对自己的开支了如指掌&#xff0c;图形化界面操作更简单&#xff0c;非常适合家庭理财、记账&#xff0c;系统界面简洁优美&#xff0c;操作直观简单&#xff0c;非常容易上手。 安装说明&#xff1a; 1、上传到网站根目录 2、用phpMyad…...

机器学习中的神经网络重难点!纯干货(上篇)

. . . . . . . . .纯干货 . . . . . . 目录 前馈神经网络 基本原理 公式解释 一个示例 卷积神经网络 基本原理 公式解释 一个示例 循环神经网络 基本原理 公式解释 一个案例 长短时记忆网络 基本原理 公式解释 一个示例 自注意力模型 基本原理…...

[DDR4] DDR1 ~ DDR4 发展史导论

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR4》 内存和硬盘是电脑的左膀右臂&#xff0c; 挑起存储的大梁。因为内存的存取速度超凡地快&#xff0c; 但内存上的数据掉电又会丢失&#xff0c;一直其中缓存的作用&#xff0c;就像是我们的工…...

享元和代理模式

文章目录 享元模式1.引出享元模式1.展示网站项目需求2.传统方案解决3.问题分析 2.享元模式1.基本介绍2.原理类图3.外部状态和内部状态4.类图5.代码实现1.AbsWebSite.java 抽象的网站2.ConcreteWebSite.java 具体的网站&#xff0c;type属性是内部状态3.WebSiteFactory.java 网站…...

[英语单词] ellipsize,动词化后缀 -ize

openvswitch manual里的一句话&#xff1a;里面有使用ellipsize&#xff0c;但是查字典是没有这个单词&#xff0c;这就是创造出来的动词。将单词ellipsis&#xff0c;加动词化后缀&#xff0c;-ize。 Often we ellipsize arguments not important to the discussion, e.g.: &…...

自然资源-测绘地信专业术语,值得收藏!

自然资源-测绘地信专业术语&#xff0c;值得收藏&#xff01; 1、1954年北京坐标系 1954年我国决定采用的国家大地坐标系&#xff0c;实质上是由原苏联普尔科沃为原点的1942年坐标系的延伸。 2、1956年黄海高程系统 根据青岛验潮站1950年一1956年的验潮资料计算确定的平均海面…...

如何在小程序中实现页面之间的返回

在小程序中实现页面之间的返回&#xff0c;通常有以下几种方法&#xff0c;这些方法各有特点&#xff0c;适用于不同的场景&#xff1a; 1. 使用wx.navigateBack方法 描述&#xff1a;wx.navigateBack是微信小程序中用于关闭当前页面&#xff0c;返回上一页面或多级页面的API…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...