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

如何减少每行输出空白以实现指定斜杠图案?

问题与解决:实现递减缩进的斜线图案

问题详情

当前输出(输入为3时):

/\
  /\
  /\

期望输出(输入为3时):

/\
 /\
/\

当前使用的C++代码:

cout << "What size? ";

    int input;
    cin >> input;

    int counter = 1;
    while(counter <= input){
        std::cout 
          << std::setfill(' ') << std::setw(input) 
          << "/" << "\\" 
          << std::endl;
        counter++;
    }

问题:设置输出宽度为输入值来输出图案,但不知道如何逐行减少空白以达成目标图案。

解决方案

问题出在你每次都固定用input作为setw的参数,导致每行缩进一致。要实现逐行减少一个空格的效果,只需把setw的参数改成input - counter + 1即可——每循环一次counter加1,输出宽度就减1,缩进也随之递减。

修改后的代码:

cout << "What size? ";

    int input;
    cin >> input;

    int counter = 1;
    while(counter <= input){
        std::cout 
          << std::setfill(' ') << std::setw(input - counter + 1) 
          << "/" << "\\" 
          << std::endl;
        counter++;
    }

解释:当counter为1时,宽度是3-1+1=3,对应第一行的2个空格+/\;counter为2时,宽度是3-2+1=2,对应1个空格+/\;counter为3时,宽度是3-3+1=1,对应0个空格+/\,完全匹配期望的输出效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:23:10