一:上下翻转
上下翻转的遍历顺序是从最下面一行开始从左到右遍历,如图:
#include<iostream>
#include<stdio.h>
using namespace std;
/**
上下翻转,
*/
int main(){
int M=4,N=3;
int temp=0;
int matrix[4][3] = {1,2,3,
4,5,6,
7,8,9,
10,11,12};
printf("上下翻转之前\n");
for(int p1=0;p1<M;p1++)
{
for(int j=0;j<N;j++)
printf("%d ",matrix[p1][j]);
printf("\n");
}
for(int p=0;p<M/2;p++){
for(int q=0;q<N;q++){
temp=matrix[p][q];
matrix[p][q]=matrix[M-p-1][q];
matrix[M-p-1][q]=temp;
}
}
printf("\n");
printf("============华丽的分割线=============\n\n");
printf("上下翻转之后\n");
for(int p1=0;p1<M;p1++)
{
for(int j=0;j<N;j++)
printf("%d ",matrix[p1][j]);
printf("\n");
}
return 0;
}
=============================我是一根傲娇的分割线===========================
二:左右翻转
原理差不多
#include<iostream>
#include<stdio.h>
using namespace std;
/**
左右翻转,
*/
int main(){
int M=4,N=3;
int temp=0;
int matrix[4][3] = {1,2,3,
4,5,6,
7,8,9,
10,11,12};
printf("左右翻转之前\n");
for(int p1=0;p1<M;p1++)
{
for(int j=0;j<N;j++)
printf("%d ",matrix[p1][j]);
printf("\n");
}
for(int p=0;p<M;p++)
{
for(int q=0;q<N/2;q++)
{
temp=matrix[p][q];
matrix[p][q]=matrix[p][N-q-1];
matrix[p][N-q-1]=temp;
}
}
printf("\n");
printf("============华丽的分割线=============\n\n");
printf("左右翻转之后\n");
for(int p1=0;p1<M;p1++)
{
for(int j=0;j<N;j++)
printf("%d ",matrix[p1][j]);
printf("\n");
}
return 0;
}
原文:http://blog.csdn.net/qq_26891045/article/details/51228023