题目:
- 晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。
输入第一行包括由空格分开的整数M、N、T(0 < M < 200,0 < N < 200,T=0或1),其中M和N分别表示待处理矩阵的行数与列数,T为0时表示左右翻转,为1时表示上下翻转。
之后的M行,每行包括由空格分隔的N个整数,依次为输入矩阵的每一行的数据。
输出包括M行N列,每个数字之间用一个空格分隔,每一行行末均有一个空格,表示的是按照要求翻转后的矩阵。
样例1
输入:
4 4 1
1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
输出:
3 4 5 6
9 0 1 2
5 6 7 8
1 2 3 4
实现代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void main()
{
int a,b,c;
int i = 0;
int j = 0;
int t = 1;
int temp = 0;
int **p = NULL;
scanf("%d %d %d",&a,&b,&c);
p = (int **)malloc(sizeof(int*)*a);
for (i = 0; i < a; ++i)
{
p[i] = (int*)malloc(sizeof(int)*b);
}
//for (i = 0; i < a; ++i)
//{
// for (j = 0; j < b; ++j)
// {
// p[i][j] = t++%10;
// }
//}
for ( i = 0; i < a; ++i)
{
for ( j = 0; j < b; ++j)
{
scanf("%d",&p[i][j]);
}
}
if(c == 1)
{
for (i = 0; i < a/2; ++i)
{
for (j = 0; j < b; ++j)
{
temp = p[i][j];
p[i][j] = p[a-i-1][j];
p[a-i-1][j] = temp;
}
}
}
else if(c == 0)
{
for (i = 0; i < b/2; ++i)
{
for (j = 0; j < a; ++j)
{
temp = p[j][i];
p[j][i] = p[j][a-i-1];
p[j][a-i-1] = temp;
}
}
}
for (i = 0; i < a; ++i)
{
for (j = 0; j < b; ++j)
{
printf("%4d",p[i][j]);
}
printf("\n");
}
getchar();
getchar();
}