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

如何使用C++嵌套循环绘制作业要求的多幅复杂图形?

C++ 嵌套循环图形绘制实现思路

所有控制台字符图形都可以拆解为「每行左侧空格计算」+「每行有效字符计算」两个核心逻辑,逐行遍历输出即可,以下是第一、第三个图形的通用实现方案:

第一个图形(空心类对称图形通用思路)

  • 先确定图形总行数n,把图形拆分为上下对称的两部分分别实现
  • 逐行输出规则:
    1. 左侧空格:上半部分第i行(从0开始计数)的左侧空格数为n/2 - i,下半部分和上半部分对称,倒序遍历即可
    2. 有效字符:空心图形仅需要在每行的第一个和最后一个有效字符位置输出*,中间位置全部输出空格,首行和末行仅输出1个*
  • 核心代码示例:
// 假设n为奇数,取7为例
int n = 7;
// 输出上半部分
for(int i = 0; i <= n/2; i++){
    // 输出左侧空格
    for(int j = 0; j < n/2 - i; j++){
        cout << " ";
    }
    // 输出星号和中间空心部分
    for(int j = 0; j < 2*i + 1; j++){
        if(j == 0 || j == 2*i){
            cout << "*";
        }else{
            cout << " ";
        }
    }
    cout << endl;
}
// 输出下半部分,倒序遍历上半部分的行号即可
for(int i = n/2 - 1; i >= 0; i--){
    for(int j = 0; j < n/2 - i; j++){
        cout << " ";
    }
    for(int j = 0; j < 2*i + 1; j++){
        if(j == 0 || j == 2*i){
            cout << "*";
        }else{
            cout << " ";
        }
    }
    cout << endl;
}

第三个图形(数字类对称三角通用思路)

如果是数字递增递减类型的三角,或者帕斯卡三角,实现逻辑如下:

  • 左侧空格计算规则和上述空心图形完全一致,先输出对应数量的空格
  • 数字输出规则:
    1. 递增递减类三角:第i行前半部分从1输出到i,后半部分从i-1倒序输出到1
    2. 帕斯卡三角:可以用二维数组提前存储每一位的数值(当前位数值=上一行相邻两位数值之和),逐行输出即可,也可以直接用组合数公式C(i,j)计算当前位数值输出
  • 核心代码示例(递增递减数字三角):
int n = 5;
for(int i = 1; i <= n; i++){
    // 输出左侧空格
    for(int j = 0; j < n - i; j++){
        cout << " ";
    }
    // 输出前半部分递增数字
    for(int j = 1; j <= i; j++){
        cout << j;
    }
    // 输出后半部分递减数字
    for(int j = i - 1; j >= 1; j--){
        cout << j;
    }
    cout << endl;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:03