feat(main): 添加复合类型、函数和控制流示例
- 在ex2_scalar_types中添加布尔类型变量 - 在ex3_compound_types中添加数组遍历示例 - 实现ex4_functions中的数学运算函数(加法、阶乘、奇偶判断) - 添加ex5_control_flow中的条件判断和fizzbuzz逻辑 - 实现ex6_loops中的各种循环结构(loop、while、for) - 添加mini_guessing_game猜数字小游戏 - 实现count_letters字母统计功能 - 注释掉部分练习函数,启用新的练习内容
This commit is contained in:
parent
73e25a8e12
commit
e70182aaee
|
|
@ -8,7 +8,12 @@ fn main() {
|
||||||
println!("Hello, world!");
|
println!("Hello, world!");
|
||||||
// ex1_variables();
|
// ex1_variables();
|
||||||
// ex2_scalar_types();
|
// ex2_scalar_types();
|
||||||
ex3_compound_types();
|
// ex3_compound_types();
|
||||||
|
// ex4_functions();
|
||||||
|
// ex5_control_flow();
|
||||||
|
// ex6_loops();
|
||||||
|
mini_guessing_game();
|
||||||
|
// ex8_stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
@ -52,6 +57,7 @@ fn ex2_scalar_types() {
|
||||||
let u8_var: u8 = 42;
|
let u8_var: u8 = 42;
|
||||||
let i32_var: i32 = 128;
|
let i32_var: i32 = 128;
|
||||||
let f64_var: f64 = 3.14;
|
let f64_var: f64 = 3.14;
|
||||||
|
let bool_var: bool = true;
|
||||||
let char_var = '2';
|
let char_var = '2';
|
||||||
|
|
||||||
println!("u8 as i32: {}", u8_var as i32);
|
println!("u8 as i32: {}", u8_var as i32);
|
||||||
|
|
@ -83,6 +89,12 @@ fn ex3_compound_types() {
|
||||||
let b1 = tup.1;
|
let b1 = tup.1;
|
||||||
let c1 = tup.2;
|
let c1 = tup.2;
|
||||||
println!("tup: {}, {}, {}", a1, b1, c1);
|
println!("tup: {}, {}, {}", a1, b1, c1);
|
||||||
|
let arr: [i32; 5] = [1, 2, 3, 4, 5];
|
||||||
|
for i in 0..arr.len() {
|
||||||
|
println!("arr[{}]: {}", i, arr[i]);
|
||||||
|
}
|
||||||
|
println!("arr length: {}", arr.len());
|
||||||
|
// arr[10]; error: index out of bounds: the len is 5 but the index is 10
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
@ -95,29 +107,35 @@ fn ex3_compound_types() {
|
||||||
// 4. 写一个无返回值的函数 greet(name: &str),打印 "你好,{name}!"。
|
// 4. 写一个无返回值的函数 greet(name: &str),打印 "你好,{name}!"。
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn add(a: i32, b: i32) -> i32 {
|
fn add(a: i32, b: i32) -> i32 {
|
||||||
// TODO
|
a + b
|
||||||
0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn factorial(n: u32) -> u32 {
|
fn factorial(n: u32) -> u32 {
|
||||||
// TODO
|
let mut result = 1;
|
||||||
0
|
for i in 1..=n {
|
||||||
|
result *= i;
|
||||||
|
}
|
||||||
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn is_even(n: i32) -> bool {
|
fn is_even(n: i32) -> bool {
|
||||||
// TODO
|
n % 2 == 0
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn greet(name: &str) {
|
fn greet(name: &str) {
|
||||||
// TODO
|
// TODO
|
||||||
|
println!("你好,{}!", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ex4_functions() {
|
fn ex4_functions() {
|
||||||
// 在这里调用上面四个函数进行测试
|
// 在这里调用上面四个函数进行测试
|
||||||
|
println!("add(1, 2): {}", add(1, 2));
|
||||||
|
println!("factorial(5): {}", factorial(5));
|
||||||
|
println!("is_even(5): {}", is_even(5));
|
||||||
|
greet("Rust");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
@ -132,17 +150,43 @@ fn ex4_functions() {
|
||||||
// 根据一个 bool 变量给另一个变量赋不同的值。
|
// 根据一个 bool 变量给另一个变量赋不同的值。
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn grade(score: u32) -> &'static str {
|
fn grade(score: u32) -> &'static str {
|
||||||
// TODO
|
let mut x = "";
|
||||||
"F"
|
if score >= 90 && score <= 100 {
|
||||||
|
x = "A";
|
||||||
|
} else if score >= 80 && score < 90 {
|
||||||
|
x = "B";
|
||||||
|
} else if score >= 70 && score < 80 {
|
||||||
|
x = "C";
|
||||||
|
} else if score >= 60 && score < 70 {
|
||||||
|
x = "D";
|
||||||
|
} else {
|
||||||
|
x = "F";
|
||||||
|
};
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn fizzbuzz(n: u32) {
|
fn fizzbuzz(n: u32) {
|
||||||
// TODO
|
for i in (1..=n) {
|
||||||
|
if i % 3 == 0 && i % 5 == 0 {
|
||||||
|
println!("FizzBuzz")
|
||||||
|
} else if i % 3 == 0 {
|
||||||
|
println!("Fizz")
|
||||||
|
} else if i % 5 == 0 {
|
||||||
|
println!("Buzz")
|
||||||
|
} else {
|
||||||
|
println!("{}", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ex5_control_flow() {
|
fn ex5_control_flow() {
|
||||||
// 在这里测试
|
// 在这里测试
|
||||||
|
let score = 89;
|
||||||
|
let condition = true;
|
||||||
|
let n = if condition { 100 } else { 50 };
|
||||||
|
println!("grade:{}", grade(score));
|
||||||
|
fizzbuzz(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
@ -157,6 +201,31 @@ fn ex5_control_flow() {
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn ex6_loops() {
|
fn ex6_loops() {
|
||||||
// TODO: 在这里写你的代码
|
// TODO: 在这里写你的代码
|
||||||
|
let mut sum = 0;
|
||||||
|
let mut i = 1;
|
||||||
|
let result = loop {
|
||||||
|
sum += i;
|
||||||
|
if i == 100 {
|
||||||
|
break sum;
|
||||||
|
};
|
||||||
|
i += 1;
|
||||||
|
};
|
||||||
|
println!("sum: {}", result);
|
||||||
|
|
||||||
|
let mut i = 10;
|
||||||
|
while i > 0 {
|
||||||
|
println!("倒数: {}", i);
|
||||||
|
i -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let arr = [10, 20, 30, 40, 50];
|
||||||
|
for (i, item) in arr.iter().enumerate() {
|
||||||
|
println!("index: {}, value: {}", i, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in 1..=5 {
|
||||||
|
println!("{} 的平方是 {}", i, i * i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
@ -173,6 +242,19 @@ fn ex6_loops() {
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn mini_guessing_game() {
|
fn mini_guessing_game() {
|
||||||
// TODO: 在这里写你的代码
|
// TODO: 在这里写你的代码
|
||||||
|
let secret_number = 62;
|
||||||
|
let guesses: [i32; 5] = [10, 50, 35, 60, 42];
|
||||||
|
|
||||||
|
for (i, guess) in guesses.iter().enumerate() {
|
||||||
|
if guess < &secret_number {
|
||||||
|
println!("第{}次猜测,{} 太小了!", i + 1, guess);
|
||||||
|
} else if guess > &secret_number {
|
||||||
|
println!("第{}次猜测,{} 太大了!", i + 1, guess);
|
||||||
|
} else {
|
||||||
|
println!("第{}次猜测,{} 猜对了!", i + 1, guess);
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
@ -186,9 +268,21 @@ fn mini_guessing_game() {
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn count_letters(s: &str) -> (u32, u32) {
|
fn count_letters(s: &str) -> (u32, u32) {
|
||||||
// TODO
|
// TODO
|
||||||
(0, 0)
|
let chars = s.chars();
|
||||||
|
let tup: (u32, u32) = (0, 0);
|
||||||
|
let (mut upper, mut lower) = tup;
|
||||||
|
for c in chars {
|
||||||
|
if c.is_uppercase() {
|
||||||
|
upper += 1;
|
||||||
|
} else if c.is_lowercase() {
|
||||||
|
lower += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(upper, lower)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ex8_stats() {
|
fn ex8_stats() {
|
||||||
// 在这里测试 count_letters
|
// 在这里测试 count_letters
|
||||||
|
let (upper, lower) = count_letters("Hello, World!");
|
||||||
|
println!("大写字母数量:{},小写字母数量:{}", upper, lower);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "part3"
|
||||||
|
version = "0.1.0"
|
||||||
Loading…
Reference in New Issue