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

C++实现带侧边行索引与底部列索引的二维矩形边框结构问题求助

C++实现带侧边行索引与底部列索引的二维矩形边框结构问题求助

嘿,我完全懂你现在的困扰——想给这个矩形边框加上侧边的行索引(x索引)和底部的列索引(y索引),但当前代码里没法把行索引放在矩形左侧的正确位置,毕竟数组索引不能是-1对吧?别担心,咱们换个逻辑就能搞定。

问题分析

你原来的代码把矩形边框和索引的位置混在同一个j循环里了,导致行索引没有单独的位置输出。咱们可以把结构拆成三部分:

  • 每一行开头先输出行索引
  • 接着输出矩形的边框和内部空白
  • 等所有矩形行都输出完,再单独输出一行底部的列索引

修正后的代码

#include <iostream>
#include <iomanip> // 用来对齐索引,让格式更整齐

using namespace std;

int main() {
    int height, width;

    cout << "Enter height value: ";
    cin >> height;
    cout << endl << "Enter width value: ";
    cin >> width;

    // 输出带行索引的矩形部分
    for (int i = 0; i < height; i++) {
        // 先输出行索引:按照你原来的逻辑,行号从height往下数到1
        cout << setw(2) << (height - i) << " "; 
        // 输出矩形的每一行
        for (int j = 0; j < width + 2; j++) {
            // 打印矩形的左右边框
            if (j == 0 || j == width + 1) {
                cout << "# ";
            } else {
                cout << "  "; // 矩形内部空白
            }
        }
        cout << endl;
    }

    // 输出矩形的底部边框
    cout << "   "; // 对齐行索引的位置
    for (int j = 0; j < width + 2; j++) {
        cout << "# ";
    }
    cout << endl;

    // 输出底部的列索引
    cout << "   "; // 对齐行索引的位置
    for (int j = 1; j <= width; j++) {
        cout << setw(2) << j << " "; // 列索引从1到width
    }
    cout << endl;

    return 0;
}

代码说明

  1. 行索引处理:每一行开头先打印行索引,用setw(2)保证索引对齐,避免单个数字和两位数字的错位问题
  2. 矩形边框:把原来的上下边框拆分处理,底部边框单独打印,确保和左侧行索引的位置对齐
  3. 列索引处理:在矩形全部输出完成后,单独打印一行列索引,同样用setw(2)对齐,位置和矩形的每一列精准对应

这样调整后,行索引就会出现在矩形的左侧,列索引在矩形的底部,完全符合你的需求啦~

备注:内容来源于stack exchange,提问作者ken

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:44:52