二维数组每行逆序数并输出新数组

img


为什么b[0][3]和b[1][3]变化了,第一次循环是对的,再循环一次就错了

因为你定义的时候,a[M][N],b[N][M],一个三行四列,另一个四行三列,怎么可能不出错

供参考:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 3
#define N 4
int main()
{
    int a[M][N], i, j, tmp;
    srand((unsigned int)time(NULL));
    printf("生成的数组:\n");
    for (i = 0; i < M; i++) {
        for (j = 0; j < N; j++) {
            a[i][j] = rand() % 100 + 1;
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    for (i = 0; i < M; i++) {
        for (j = 0; j < N / 2; j++) {
            tmp = a[i][j];
            a[i][j] = a[i][N - 1 - j];
            a[i][N - 1 - j] = tmp;
        }
    }
    printf("逆序后的数组:\n");
    for (i = 0; i < M; i++){
        for (j = 0; j < N; j++) {
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}