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!");
|
||||
// ex1_variables();
|
||||
// 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 i32_var: i32 = 128;
|
||||
let f64_var: f64 = 3.14;
|
||||
let bool_var: bool = true;
|
||||
let char_var = '2';
|
||||
|
||||
println!("u8 as i32: {}", u8_var as i32);
|
||||
|
|
@ -83,6 +89,12 @@ fn ex3_compound_types() {
|
|||
let b1 = tup.1;
|
||||
let c1 = tup.2;
|
||||
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}!"。
|
||||
#[allow(dead_code)]
|
||||
fn add(a: i32, b: i32) -> i32 {
|
||||
// TODO
|
||||
0
|
||||
a + b
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn factorial(n: u32) -> u32 {
|
||||
// TODO
|
||||
0
|
||||
let mut result = 1;
|
||||
for i in 1..=n {
|
||||
result *= i;
|
||||
}
|
||||
result
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn is_even(n: i32) -> bool {
|
||||
// TODO
|
||||
false
|
||||
n % 2 == 0
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn greet(name: &str) {
|
||||
// TODO
|
||||
println!("你好,{}!", name)
|
||||
}
|
||||
|
||||
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 变量给另一个变量赋不同的值。
|
||||
#[allow(dead_code)]
|
||||
fn grade(score: u32) -> &'static str {
|
||||
// TODO
|
||||
"F"
|
||||
let mut x = "";
|
||||
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)]
|
||||
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() {
|
||||
// 在这里测试
|
||||
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)]
|
||||
fn ex6_loops() {
|
||||
// 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)]
|
||||
fn mini_guessing_game() {
|
||||
// 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)]
|
||||
fn count_letters(s: &str) -> (u32, u32) {
|
||||
// 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() {
|
||||
// 在这里测试 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