计算机中使用二维数据表示一幅图像。假设有一幅图像大小为5*5,请编程实现这幅图像的水平翻转。
我觉得你应该知道二维数组翻转,例如:
1 2 3 4 5 5 4 3 2 1
1 2 3 4 5 5 4 3 2 1
1 2 3 4 5 ------->>>>> 5 4 3 2 1
1 2 3 4 5 5 4 3 2 1
1 2 3 4 5 5 4 3 2 1
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5/2; j++)
{
int t = arr[i, j];
arr[i, j] = arr[i, 5 - j -1];
arr[i, 5 - j - 1] = t;
}
}
#include
#define IMAGEX 5
#define IMAGEY 6
char buf[IMAGEX][IMAGEY];
char image[IMAGEX][IMAGEY] = {
{"abcde\0"},
{"abcde\0"},
{"abcde\0"},
{"abcde\0"},
{"abcde\0"}
};
int main(int argc, char const *argv[])
{
int i,j;
for (i=0; i<IMAGEX; i++)
{
puts(image[i]);
}
for (i=0; i<IMAGEX; i++)
for (j=0; j<IMAGEY; j++)
buf[i][j] = image[IMAGEX-1-i][IMAGEY-2-j];
buf[i][j] = '\0';
for (i=0; i<IMAGEX; i++)
{
puts(buf[i]);
}
return 0;
}
#include <stdio.h>
#define IMAGEX 5
#define IMAGEY 6
char buf[IMAGEX][IMAGEY];
char image[IMAGEX][IMAGEY] = {
{"abcde\0"},
{"abcde\0"},
{"abcde\0"},
{"abcde\0"},
{"abcde\0"}
};
int main(int argc, char const *argv[])
{
int i,j;
for (i=0; i<IMAGEX; i++)
{
puts(image[i]);
}
for (i=0; i<IMAGEX; i++)
for (j=0; j<IMAGEY; j++)
buf[i][j] = image[IMAGEX-1-i][IMAGEY-2-j];
buf[i][j] = '\0';
for (i=0; i<IMAGEX; i++)
{
puts(buf[i]);
}
return 0;
}