数字图案
本课属于 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挑战
简单每个测试用例有一个输入,即一个奇数。
你的任务是使用 * 打印 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();
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Rust 在线编译器