矩阵螺旋输出

最近学到二维数组,遇到了矩阵螺旋输出的练习题
记录一下

#include <iostream>
using namespace std;

int main() {
    int matrix[100][100];
    int m;
    int n;
    int j;
    int i;
    while(1) {
        cin >> m;
        cin >> n;
        for (i = 0; i<m; i++) {
            for (j = 0; j<n; j++) {
                cin >> matrix[i][j];
            }
        }
        int a = m;
        int b = n;
        int x = 0;
        int flag = 0;
        while (m >= 2 && n >= 2) {
            //输出上面的x行
            for (i = x; i < m; i++) {
                for (j = x; j < n ;j++) {
                    cout << matrix[i][j];// << " ";
                    flag++;
                    if (flag < a * b)
                        cout << " ";
                    // if ( (n == 3) && (m >= 3) && (j == x) ) 
                    //     continue;
                    // else
                    //     cout << " ";
                    
                }
                break;
            }
            
            //输出右边的y列
            for (j = n - 1; j >= x; j--) {
                for (i = x + 1; i < m; i++) {
                    cout << matrix[i][j];// << " ";
                    flag++;
                    if (flag < a * b)
                        cout << " ";
                    // if ( (n == 3) && (m >= 4) && (i == m - 1) )
                    //     continue;
                    // else
                    //     cout << " ";
                    
                }
                break;
            }

            //输出下面的x行
            for (i = m - 1; i > x; i--) {
                for (j = n - 2; j >= x; j--) {
                    cout << matrix[i][j]; // << " ";
                    flag++;
                    if (flag < a * b)
                        cout << " ";
                    // if ( (m == 3) && (n >= 2) && (j == x) )
                    //     continue;
                    // else
                    //     cout << " ";
                    
                }
                break;
            }

            //输出左边的y列
            for (j = x; j < n; j++) {
                for (i = m - 2; i >= x + 1; i--) {
                    cout << matrix[i][j];// << " ";
                    flag++;
                    if (flag < a * b)
                        cout << " ";
                    // if ( () )
                    
                }
                break;
            }

            //去除已经输出的最外层
            m--;
            n--;
            //去除最外层之后,需要将x++
            x++;
        }

    }
        
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值