这个数组回形遍历是哪里出错了


#include <stdio.h>

int main(void) {
    int arr[102][102];
    int row, col;    //右上边界标记(行列数)
    scanf("%d %d", &row, &col);
    //存数
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            scanf("%d", &arr[i][j]);
        }
    }
    //取数   当到达最后一个数,结束
    int i = 0, j = 0;    //总数标记
    int x = 0, y = 0;    //左下边界标记
    int k = 1;    //方向标记
    int t = 1;
    int all = row * col;
    for (int m = 0; m < all; m++) {
        if (k == 1) {    //向右
            k++;
            for (; j < col; j++)
                printf("%d\n", arr[i][j]);
            j--;
            col -= 1;
        } else if (k == 2) {    //向下
            i++;
            k++;
            for (; i < row; i++)
                printf("%d\n", arr[i][j]);
            i--;
            row -= 1;
        } else if (k == 3) {    //向左
            j--;
            k++;
            for (; j >= y; j--)
                printf("%d\n", arr[i][j]);
            j++;
            y++;
        } else if (k == 4) {    //向上
            i--;
            k++;
            for (; i > x; i--)
                printf("%d\n", arr[i][j]);
            i++;
            x++;
        } else if (k == 5) {    //向右(非第一行)
            j++;
            k = 2;
            for (; j < col; j++)
                printf("%d\n", arr[i][j]);
            j--;
            col -= 1;
        }
    }
}

img


这个是题目,其他情况下都没问题,就是当row<col的时候会出现多输出了前一个数,没找出来是哪里的问题

代码测试正常啊.有什么问题吗?

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632