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

如何打印带边和对角线的菱形图案?现有代码无法输出竖线

解决带边和对角线的菱形打印问题

问题描述

给定整数n(表示菱形的边长),编写程序打印包含边和对角线的菱形图案。

  • 输入:单行输入一个整数n
  • 输出:打印带边和对角线的菱形图案
    样例输入:5
    样例输出:
*    
   ***   
  * * *  
 *  *  * 
*********
 *  *  * 
  * * *  
   ***   
    *    

问题原因

你当前的代码仅判断了菱形的边缘、最底部和最顶部的整行星号,但遗漏了中间对角线位置的星号判断,这就是图案中缺少竖线(对角线星号)的原因。

修改后的代码

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    // 上半部分菱形
    for (int i = 1; i <= n; i++) {
        // 打印前置空格
        for (int j = 1; j <= n - i; j++) {
            cout << " ";
        }

        // 打印星号和空格
        for (int j = 1; j <= 2 * i - 1; j++) {
            // 新增j == i的判断,对应中间对角线位置
            if (j == 1 || j == 2 * i - 1 || i == n || j == i) {
                cout << "*";
            } else {
                cout << " ";
            }
        }

        cout << endl;
    }

    // 下半部分菱形
    for (int i = n - 1; i >= 1; i--) {
        // 打印前置空格
        for (int j = 1; j <= n - i; j++) {
            cout << " ";
        }

        // 打印星号和空格
        for (int j = 1; j <= 2 * i - 1; j++) {
            // 新增j == i的判断,对应中间对角线位置
            if (j == 1 || j == 2 * i - 1 || i == 1 || j == i) {
                cout << "*";
            } else {
                cout << " ";
            }
        }

        cout << endl;
    }

    return 0;
}

代码说明

修改的核心是在上下半部分的星号判断条件中,增加了j == i的判断:

  • 对于上半部分第i行,j == i对应从左上到右下的对角线位置,会在该行中间打印星号;
  • 对于下半部分第i行,j == i同样对应对称的对角线位置,保证图案的对称性。

这样修改后,程序就能正确输出包含边和对角线的菱形图案,与样例输出完全一致。

内容的提问来源于stack exchange,提问作者Prince Kumar Prajapati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:40:17