Menu
CoddyTech

数字图案

本课属于 Coddy Rust 学习旅程的“基础知识”单元。第 73 课,共 75 课。

创建金字塔这类图案时,我们经常需要创建由重复字符组成的字符串。在 Rust 中,有几种方法可以实现,但下面是最直接的方法之一:

let str = "a".repeat(10);

str 中会保存 "aaaaaaaaaa"

repeat() 方法要求的参数必须是 usize,而不是像 i32 这样的普通整数类型。

usize 是 Rust 的无符号指针大小整数类型,其大小取决于你的架构(32 位系统上为 32 位,64 位系统上为 64 位)。

let count: usize = 5;
let repeated = "x".repeat(count);  // 这样可以正常运行

如果你有一个 i32 或其他整数类型,就需要进行转换:

let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// 使用 'as usize' 进行转换

这段代码无法编译:

let repeated = "z".repeat(num);
// 错误:预期为 usize,实际为 i32
challenge icon

挑战

简单

每个测试用例有一个输入,即一个奇数。
你的任务是使用 * 打印 n 层金字塔,示例如下:

1 层金字塔

*

5 层金字塔

*
***
*****

7 层金字塔

*
***
*****
*******

输入

  • 用户输入一个奇数 n
  • 1 <= n < 1000

提示

  • 试着从较小的三角形开始
  • 如果你卡住了,可以查看提示 ;)

n 表示底行中  * 的数量

注意:在 Rust 中,处理某个内容“大小”或“长度”的函数(例如 .repeat())需要使用一种名为 usize 的类型,而不是 i32;你可以把 usize 当作一个永远不会为负数的普通整数。

亲手试试

use std::io;

fn main() {
    let mut input_n = String::new();
    io::stdin().read_line(&mut input_n).unwrap();
    let n: usize = input_n.trim().parse().unwrap();

    
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Rust 在线编译器