7-8 超速判断 (10 分)
这道题只需要一个简单的分支,非常简单的就可以解决,无需多言
AC代码:
use std::io;
fn main() {
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.unwrap();
let mut s = input.trim().split(' ');
let a_str = s.next().unwrap();
let mut a: i32 = a_str.parse().unwrap();
if (a > 60)
{
println!("Speed: {} - Speeding",a);
}
else
{
println!("Speed: {} - OK",a);
}
}
7-9 用天平找小球 (10 分)
看到这个题我的第一反应是hash_map,不过这也太小题大做了吧。我们只需要简单的写三个分支就可以解决这个问题
AC代码:
use std::io;
fn main() {
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.unwrap();
let mut s = input.trim().split(' ');
let a_str = s.next().unwrap();
let a: i32 = a_str.parse().unwrap();
let b_str = s.next().unwrap();
let b : i32 = b_str.parse().unwrap();
let c_str = s.next().unwrap();
let c : i32 = c_str.parse().unwrap();
if a==b
{
println!("C")
}
else if b==c
{
println!("A")
}
else
{
println!("B")
}
}
大家有没有发现这两道题的分支不太一样?
第一道题我的if判断条件加了括号,实际上,这样编译器会有一个warning。
最好的写法时第二种,不需要括号,只需要一个bool型条件句。
说完了if/if else语句,该说一下其他的分支了。
7-12 两个数的简单计算器 (10 分)
这在C/C++或者其他语言里,很自然的会想到switch case语句,但是switch case在rust中并不存在,取而代之的是match语句。先来看看这个题怎么实现
AC代码:
use std::io;
fn main() {
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.unwrap();
let mut s = input.trim().split(' ');
let a_str = s.next().unwrap();
let a: i32 = a_str.parse().unwrap();
let b_str = s.next().unwrap();
let b: char = b_str.parse().unwrap();
let c_str = s.next().unwrap();
let c: i32 = c_str.parse().unwrap();
match b
{
'+' => println!("{}",a+c),
'-' => println!("{}",a-c),
'*' => println!("{}",a*c),
'/' => println!("{}",a/c),
'%' => println!("{}",a%c),
_ => println!("ERROR"),
}
}
和switch case有一些相似,不过可以看到其实match比switch更加方便,不需要break,=>也比:更加明显。_代替defult也更加方便。match用起来很明了,大家肯定一看就懂~
需要多行代码时可以用一个{}把代码括起来,比如:
'+' => {
println!("{}",a+c);
println!("test")
},