如何修改C++代码实现8行6列数字矩阵偶数行倒序交替输出
解决方案
修改思路
你的奇偶行判断思路完全可行,只需要调整输出时的列遍历方向即可,另外原代码有2个小问题需要先修复:
- 循环变量
i、j没有提前声明,C++中需要先定义变量再使用 - 原有的空格对齐逻辑可以优化,避免出现错位
具体修改逻辑:
- 先按原有逻辑填充二维数组,不需要修改填充规则
- 输出时判断当前行索引
i的奇偶性:- 偶数索引行(
i%2 == 0):从最后一列往前遍历输出,实现倒序效果 - 奇数索引行:保持原有从左到右的遍历逻辑
- 偶数索引行(
完整可运行代码
#include <iostream> #include <iomanip> using namespace std; int main() { // 定义矩阵维度 int x = 6, y = 8; int sum = 0; int numery[8][6] = {}; int i, j; // 顺序填充矩阵 for (i = 0; i < y; i++) { for (j = 0; j < x; j++) { numery[i][j] = ++sum; } } // 按要求格式输出 for (i = 0; i < y; i++) { if (i % 2 == 0) { // 偶数行倒序输出 for (j = x - 1; j >= 0; j--) { cout << setw(4) << numery[i][j]; } } else { // 奇数行正序输出 for (j = 0; j < x; j++) { cout << setw(4) << numery[i][j]; } } cout << endl; } return 0; }
不引入的兼容版本
如果你不想额外引入头文件,也可以保留手动加空格的对齐逻辑,替换输出部分的代码即可:
// 输出部分替换为以下代码 for (i = 0; i < y; i++) { if (i % 2 == 0) { for (j = x - 1; j >= 0; j--) { // 个位数前面补2个空格,两位数补1个空格对齐 if (numery[i][j] <= 9) cout << " "; else cout << " "; cout << numery[i][j] << " "; } } else { for (j = 0; j < x; j++) { if (numery[i][j] <= 9) cout << " "; else cout << " "; cout << numery[i][j] << " "; } } cout << endl; }
内容的提问来源于stack exchange,提问作者znaczki654
相关产品推荐
相关产品推荐

