【发布时间】:2018-01-31 03:48:06
【问题描述】:
我似乎无法创建一个通用方法来反转任何大小的二维数组。我有以下代码,仅适用于 3x3 数组。有没有办法修改此代码以反转任何大小的二维数组?
I need my array to go from:
[ 1 2 3 ]
[ 4 5 6 ]
[ 7 8 9 ]
to:
[ 3 2 1 ]
[ 6 5 4 ]
[ 9 8 7 ]
但这应该适用于任何数组大小,而不仅仅是 3x3 也不仅仅是 nxn 数组(方形数组)。
#include<stdio.h>
#include<string.h>
int main()
{
int r,r2,c,c2,temp;
int rows = 3;
int columns = 3;
int a[rows][columns];
a[0][0] = 1;
a[0][1] = 2;
a[0][2] = 3;
a[1][0] = 4;
a[1][1] = 5;
a[1][2] = 6;
a[2][0] = 7;
a[2][1] = 8;
a[2][2] = 9;
r = 0;
r2 = rows-1;
c = 0;
c2 = columns-1;
while(r<=r2){
while(c<=c2){
temp = a[r][c];
a[r][c] = a[r2][c2];
a[r2][c2] = temp;
c++;
c2--;
}
temp = a[r][c];
a[r][c] = a[r2][c2];
a[r2][c2] = temp;
r++;
r2--;
}
for(r=0;r<3;r++){
for(c=0;c<3;c++){
printf("%d\n",a[r][c]);
}
}
}
【问题讨论】:
-
“我有以下代码,它只适用于 3x3 数组”——你确定吗?为什么它只适用于 3X3 数组,并注意发布的代码没有给出声称的输出。
标签: c arrays methods 2d reverse