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

C++二维数组行列逆序输出:循环实现及动态适配问询

二维数组逆序输出:循环实现与扩展性优化

需求说明

将指定数量的整数读入二维整型数组,随后按行和列的逆序输出该数组,要求每个整数后输出一个空格(包括每行末尾的整数)。

示例输入

5 7 3
6 4 3
5 6 9
5 2 8

示例输出

8 2 5 
9 6 5 
3 4 6 
3 7 5 

当前硬编码实现

目前通过硬编码数组下标完成逆序输出,代码如下:

#include <iostream>
using namespace std;

int main() {

   const int ROWS = 4;
   const int COLS = 3;
   int arr[ROWS][COLS];
   int i, j;
   for(i = 0; i < ROWS; i++){
        for(j = 0; j < COLS; j++){
               cin>>arr[i][j];
         }
   }
   cout << arr[3][2] << " " << arr[3][1] << " " << arr[3][0] << " " << endl;
   cout << arr[2][2] << " " << arr[2][1] << " " << arr[2][0] << " "<< endl;
   cout << arr[1][2] << " " << arr[1][1] << " " << arr[1][0] << " "<< endl;
   cout << arr[0][2] << " " << arr[0][1] << " " << arr[0][0] << " "<< endl;

   return 0;
}

问题解答

1. 能否使用for循环实现二维数组的逆序输出?

完全可以。只需调整循环的起始与终止条件,让行从最后一行遍历到第一行,列从最后一列遍历到第一列即可。

修改后的代码如下:

#include <iostream>
using namespace std;

int main() {

   const int ROWS = 4;
   const int COLS = 3;
   int arr[ROWS][COLS];
   int i, j;

   // 读取数组
   for(i = 0; i < ROWS; i++){
        for(j = 0; j < COLS; j++){
               cin >> arr[i][j];
         }
   }

   // 逆序输出:行逆序+列逆序
   for(i = ROWS - 1; i >= 0; i--){
        for(j = COLS - 1; j >= 0; j--){
               cout << arr[i][j] << " ";
         }
        cout << endl; // 每行结束换行
   }

   return 0;
}

逻辑说明:

  • 行循环i从ROWS-1(最后一行下标)开始递减到0,实现行的逆序遍历
  • 列循环j从COLS-1(最后一列下标)开始递减到0,实现列的逆序遍历
  • 每个元素输出后添加空格,每行元素输出完成后换行,完全符合需求

2. 修改行列数后,程序能否正确输出对应的数组内容?

可以。代码中使用ROWS和COLS常量定义数组大小、控制循环边界,所有遍历逻辑都依赖这两个常量而非硬编码数字。

比如需要改为5行4列时,只需修改const int ROWS = 5;和const int COLS = 4;,程序就能自动适配新的数组大小,完成读取和逆序输出,无需修改循环逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:30:49