C 语言 利用二维数组实现对输入的数组进行翻转(帮助理解对图像翻转编辑原理)
/*
?输入几行几列数字和翻转方式,如:
3 4 0即代表3行4列,左右翻转;
6 5 1即代表6行5列,上下翻转。
输入示例:
3 4 0
_________________
1 2 3 4
5 6 7 8
9 0 1 2
输出为:
4 3 2 1
8 7 6 5
2 1 0 9
*/
#include
int main(){
int M, N, T;
printf("请输入几行几列数字和翻转方式,如:\n 3 4 0即代表3行4列,左右翻转;\n 6 5 1即代表6行5列,上下翻转。\n_________________\n");
scanf("%d %d %d", &M, &N, &T);
printf("请输数字,每位数字一空格间隔,每一行以回车分隔\n");
int arr[M][N];//定义M行N列的数组并读取每个元素的值
int i, j;
for(i = 0; i
for(j = 0; j
scanf("%d", &arr[i][j]);
}
}
printf("输出为: \n");
int c, save, M2 = M - 1, m = M/2, N2 = N -1, n = N/2;
int g1 = N2, g2 = M2;
if(T == 0){//左右翻转
for(i = 0; i
N2= g1;
for(c = 0; c
save = arr[i][c];
arr[i][c] = arr[i][N2];
arr[i][N2] = save;
N2 -= 1;
}
}
}else if(T == 1){//上下翻转
for(j = 0; j
M2 = g2;
for(c = 0; c
save = arr[c][j];
arr[c][j] = arr[M2][j];
arr[M2][j] = save;
M2 -= 1;
}
}
}
//输出翻转后的数组
for(i = 0; i
for(j = 0; j
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}