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; }
代码说明
- 行索引处理:每一行开头先打印行索引,用
setw(2)保证索引对齐,避免单个数字和两位数字的错位问题 - 矩形边框:把原来的上下边框拆分处理,底部边框单独打印,确保和左侧行索引的位置对齐
- 列索引处理:在矩形全部输出完成后,单独打印一行列索引,同样用
setw(2)对齐,位置和矩形的每一列精准对应
这样调整后,行索引就会出现在矩形的左侧,列索引在矩形的底部,完全符合你的需求啦~
备注:内容来源于stack exchange,提问作者ken
相关产品推荐
相关产品推荐

