原地转置
程序如下:
int main()
{
int a[4][4];
int len1 = sizeof(a) / sizeof(a[0]);
int len2 = sizeof(a[0]) / sizeof(a[0][0]);
for (int i = 0;i < len1;++i)
{
for (int j = 0;j < len2;++j)
{
a[i][j] = i*len2 + j;
}
}
for (int i = 0;i < len1;++i)
{
for (int j = 0;j < len2;++j)
{
printf("%-3d", a[i][j]);
}
puts("");//换行
}
puts("**************");
int t;
for (int i = 0;i < len1;++i)
{
for (int j = 0;j <i;++j)
{
t = a[j][i];
a[j][i] = a[i][j];
a[i][j] = t;
}
}
for (int i = 0;i < len1;++i)
{
for (int j = 0;j < len2;++j)
{
printf("%-3d", a[i][j]);
}puts("");//换行
}
}
水平镜像:
void HMirror(int a[][4], int len1, int len2)
{
int t;
for (int i = 0;i < len1;++i)
{
for (int j = 0;j <len2 / 2;++j)
{
t = a[i][j];
a[i][j] = a[i][len2-1-j];
a[i][len2-1-j] = t;
}
}
}
int main()
{
int a[4][4];
int len1 = sizeof(a) / sizeof(a[0]);
int len2 = sizeof(a[0]) / sizeof(a[0][0]);
for (int i = 0;i < len1;++i)
{
for (int j = 0;j < len2;++j)
{
<