晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。
输入第一行包括由空格分开的整数M、N、T(0 < M < 200,0 < N < 200,T=0或1),其中M和N分别表示待处理矩阵的行数与列数,T为0时表示左右翻转,为1时表示上下翻转。
之后的M行,每行包括由空格分隔的N个整数,依次为输入矩阵的每一行的数据。
输出包括M行N列,每个数字之间用一个空格分隔,每一行行末均有一个空格,表示的是按照要求翻转后的矩阵。
样例输入
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
C:
#include <stdio.h>
int main()
{
int m, n, t, num[200][200], i, j;
scanf("%d%d%d", &m, &n, &t);
for (j = 0; j < m; j++)
{
for (i = 0; i < n; i++)
scanf("%d", &num[j][i]);
}
if (t == 1)
{
for (j = m - 1; j >= 0; j--)
{
for (i = 0; i < n; i++)
{
printf("%d", num[j][i]);
if (i != n - 1)
printf(" ");
}
if (j != 0){
printf(" ");
printf("\n");
}
}
printf(" ");
}
else
{
for (j = 0; j < m; j++)
{
for (i = n - 1; i >= 0; i--)
{
printf("%d", num[j][i]);
if (i != 0)
printf(" ");
}
if (j != m - 1){
printf(" ");
printf("\n");
}
}
}
return 0;
}
Java:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int x, y, flg;
Scanner sc = new Scanner(System.in);
x = sc.nextInt();
y = sc.nextInt();
flg = sc.nextInt();
int[][] a = new int[x][y];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
a[i][j] = sc.nextInt();
}
}
// 上下翻转输出
if (flg == 1) {
for (int i = x - 1; i >= 0; i--) {
for (int j = 0; j < y; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
if (flg == 0) {
// 左右反转输出
for (int i = 0; i < x; i++) {
for (int j = y - 1; j >= 0; j--) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
}
C++就不写了,基本和C一样。