You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Rust的for循环打印半金字塔?代码异常问题求助

问题原因与解决方案

你的问题出在**println!("*")**这个语句上——println!会在输出内容后自动添加换行符,导致每个星号都单独占了一行。要实现预期的每行多星号效果,应该用print!("*"),它只会输出内容而不自动换行,等内层循环把当前行的所有星号都输出完,再用println!()来换行。

修正后的代码如下:

#![allow(unused_variables)]
#![allow(dead_code)]
#![allow(unused_mut)]

fn main()
{
    let mut x: isize;
    let mut y: isize; 

    y = 5; 

    for x in 0..=y
    {
        for _ in 0..=x
        {
            print!("*"); // 替换为print!,不自动换行
        }
        println!(); // 内层循环结束后换行,开启新行
    }
}

运行这段代码就能得到你预期的半金字塔输出:

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

另外可以简化代码——你声明的mut x和mut y其实没必要,因为for x in 0..=y里的x是循环作用域内的新变量,和外部声明的变量无关,简化后代码更整洁:

#![allow(unused_variables)]
#![allow(dead_code)]

fn main() {
    let y = 5; 

    for x in 0..=y {
        for _ in 0..=x {
            print!("*");
        }
        println!();
    }
}

内容的提问来源于stack exchange,提问作者Saksham Mahajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:37:45