程序代码:
#include <stdio.h>
#include <stdlib.h>
#define M 200
#define N 200
int main()
{
int a[M][N]={0};
int i=0,j=0;
int m=0,n=0,T=0;
int(*p)[M]=NULL;
p=a;
printf("先输入矩阵的行数及列数,再输入矩阵:\n\n");
printf("例:\t3 3\n");
printf("\t1 2 3\n\t4 5 6\n\t7 8 9\n\n");
scanf("%d %d",&m,&n);
getchar();
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
//输出已经存入数组a中的数据
/*
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("%d ",*(p[i]+j));
if((j+1)==n)
printf("\n");
}
*/
printf("请选择翻转模式:\n");
printf("0:左右翻转 1:上下翻转 2:逆时针90°旋转 3:顺时针90°旋转\n");
getchar();
scanf("%d",&T);
switch(T)
{
//左右翻转
case 0:
for(i=0;i<m;i++)
for(j=n-1;j>=0;j--)
{
printf("%d ",*(p[i]+j));
if(j==0)
printf("\n");
}
break;
//上下翻转
case 1:
for(i=m-1;i>=0;i--)
for(j=0;j<n;j++)
{
printf("%d ",*(p[i]+j));
if((j+1)==n)
printf("\n");
}
break;
//逆时针90度旋转
case 2:
for(j=n-1;j>=0;j--)
for(i=0;i<m;i++)
{
printf("%d ",*(p[i]+j));
if((i+1)==n)
printf("\n");
}
break;
//顺时针90度旋转
case 3:
for(j=0;j<n;j++)
for(i=m-1;i>=0;i--)
{
printf("%d ",*(p[i]+j));
if(i==0)
printf("\n");
}
break;
}
return 0;
}