刷题学rust(一)——rust基础IO

写在前面:

最近开始学rust了,但是单纯的看教程学效果并不明显,rust的语法啥的还是和C/C++有挺大区别的(而且真的很难记),于是我便开始在刷题的过程中学习rust了。
于是我开始物色题目,既然是从零开始,那题目就不便太难,翻了翻PTA,发现基础编程题目集的题目还不错。这下找到了目标,但是上阵之前还得有武器,我这边是按照菜鸟教程的方法使用VScode的终端来运行代码。当然,也可以选择直接在PTA平台上运行代码,但是……速度真的不算快……要是不介意一直转圈,也不失为一种不错的选择。在这里插入图片描述
好了,废话不多说,让我们言归正传。

7-5 表格输出 (5 分)

在这里插入图片描述
我们的第一道题是要求简单的输出,我献丑放一下我的代码

fn main()
{
    println!("------------------------------------
Province      Area(km2)   Pop.(10K)
------------------------------------
Anhui         139600.00   6461.00
Beijing        16410.54   1180.70
Chongqing      82400.00   3144.23
Shanghai        6340.50   1360.26
Zhejiang      101800.00   4894.00
------------------------------------");
  }

值得注意的是,相比其他的变成语言,在rust println的()里的的回车会被输出出去,而不用’\n’换行。
开始我也是使用‘\n’,被提示格式错误,去掉‘\n’后,代码AC。

7-6 混合类型数据格式化输入 (5 分)

在这里插入图片描述
第二道题用rust来处理明显感觉到麻烦了,还是我先来献丑

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: f32 = a_str.parse().unwrap();

    let b_str = s.next().unwrap();
    let b: i32 = b_str.parse().unwrap();
    
    let c = s.next().unwrap();
    
    let d_str = s.next().unwrap();
    let d: f32 = d_str.parse().unwrap();
    
    println!("{} {} {:.2} {:.2}",c,b,a,d);
}

首先我们需要std::io模块,然后读入一行。然后将读入的字符串按照’ '为界分割开,再将字串分别赋予四个字符串,然后将字符串转化成相应的格式,最后输出(当然,某些特殊的情况可以不输出)。然后我直接输出发现答案错误,仔细对比之后发现,原来题目中需要保存两位小数。这就需要使用println的控制符来控制输出精度了。
使用{:.precision}来控制小数点位数。


版权声明:本文为Charlesix59原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。