Rust学习Day3: 3个小demo实现
实操1:相互转换摄氏与华氏温度
转换公式:
摄氏转华氏温度公式: x * 9.0 / 5.0 + 32.0,华氏温度转摄氏反之
用到的功能点:
- 函数
fn - 定义变量:
let mut x = String::new() - 读取输入:
rust
use std::io;
// 读取
io:stdin().read_line(&mut x).expect("读取失败");
- 字符串转浮点数
rust
let x: f64 = match x.trim().parse(){
Ok(num) => num,
Err(_) => {
println!("请输入一个有效的数字!")
return;
}
}
实现代码:
rust
use std::io; // 标准库导入
fn main() {
println!("摄氏与华氏温度转换");
// 输入摄氏温度
println!("请输入摄氏温度:");
let mut celsius_input = String::new();
// 从标准输入读取摄氏温度
io::stdin()
.read_line(&mut celsius_input)
.expect("读取输入失败");
// 输出读取的值
println!("您输入的摄氏温度是:{}", celsius_input.trim());
// 将输入的字符串转换为浮点数
let celsius: f64 = match celsius_input.trim().parse(){
Ok(num) => num,
Err(_) => {
println!("请输入一个有效的数字!");
return;
}
};
// 调用转换函数
let fahrenheit = celsius_to_fahrenheit(celsius);
// 输出转换结果
println!("对应的华氏温度是:{:.2}", fahrenheit);
// 输入华氏温度
println!("请输入华氏温度:");
let mut fahrenheit_input = String::new();
// 从标准输入读取华氏温度
io::stdin()
.read_line(&mut fahrenheit_input)
.expect("读取输入失败");
// 输出读取的值
println!("您输入的华氏温度是:{}", fahrenheit_input.trim());
// 将输入的字符串转换为浮点数
let fahrenheit: f64 = match fahrenheit_input.trim().parse(){
Ok(num) => num,
Err(_) => {
println!("请输入一个有效的数字!");
return;
}
};
// 调用转换函数
let celsius = fahrenheit_to_celsius(fahrenheit);
// 输出转换结果
println!("对应的摄氏温度是:{:.2}", celsius);
}
// 摄氏度转华氏度函数
fn celsius_to_fahrenheit(celsius: f64) -> f64 {
celsius * 9.0 / 5.0 + 32.0
}
// 华氏度转摄氏度函数
fn fahrenheit_to_celsius(fahrenheit: f64) -> f64 {
(fahrenheit - 32.0) * 5.0 / 9.0
}
实操2:生成第n个的斐波那契数
定义: 斐波那契数列是一列整数,通常定义为:F(0)=0,F(1)=1,对 n>=2,F(n)=F(n-1)+F(n-2)。序列开始为 0,1,1,2,3,5,8,...
实现代码:
rust
use std::io; // 标准库
fn main() {
println!("生成第n个斐波那契数");
println!("定义:斐波那契数列是一列整数,通常定义为:F(0)=0,F(1)=1,对 n>=2,F(n)=F(n-1)+F(n-2)。序列开始为 0,1,1,2,3,5,8,...");
println!("请输入n(最大1000):");
let mut input = String::new(); // 创建一个可变的字符串变量来存
// 读取输入的数字
io::stdin()
.read_line(&mut input)
.expect("读取输入失败");
// 将输入的字符串转为整数
let n: u64 = match input.trim().parse(){
Ok(num) => num,
Err(_) => {
println!("请输入一个有效的整数");
return;
}
};
// 输出接收到的值
println!("你输入的n是:{}", n);
// 调用函数
let result = fibonacci(n);
println!("第{}个斐波那契数是: {}", n, result);
}
// 定义处理的方法
fn fibonacci(n: u64) -> u128 {
if n == 0 {
return 0;
} else if n == 1 {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
实操3:输出圣诞歌
rust
fn main() {
println!("打印圣诞颂歌");
// 定义一个数组
let ordinals = ["first", "second", "third", "fourth", "fifth", "sixth",
"seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth"];
let gifts = [
"a Partridge in a Pear Tree.",
"Two Turtle Doves,",
"Three French Hens,",
"Four Calling Birds,",
"Five Gold Rings,",
"Six Geese a-Laying,",
"Seven Swans a-Swimming,",
"Eight Maids a-Milking,",
"Nine Ladies Dancing,",
"Ten Lords a-Leaping,",
"Eleven Pipers Piping,",
"Twelve Drummers Drumming,"
];
// 循环拼接歌词
for day in 0..12 {
println!("On the {{ordinals[day]}} day of Christmas my true love sent to me:");
for i in (0..day).rev(){ // 倒序输出
if i == 0 && day > 1{
println!("and {}", gifts[0])
} else {
println!("{}", gifts[i])
}
}
}
println!();
}
本人正在参考官方文档学习这门语言,如果有描述错误的,欢迎各位RUST大神指出;
