150 矩阵旋转.c 959 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /* 样例输入
  4. 3 4
  5. -1 3 6 3
  6. 7 7 9 1
  7. 10 3 4 6
  8. 输出旋转后的矩阵
  9. */
  10. //创建行列式
  11. int **arrInit(int m, int n);
  12. // 释放行列式
  13. void arrClose(int m, int n, int **pInt);
  14. // 旋转90º * 3 矩阵
  15. int main() {
  16. int m, n;
  17. scanf("%d %d", &m, &n);
  18. int **l = arrInit(m, n);
  19. for (int i = 0; i < n; ++i) {
  20. for (int j = m - 1; j >= 0; --j) {
  21. printf("%d", l[j][i]);
  22. if (j) printf(" ");
  23. }
  24. printf("\n");
  25. }
  26. arrClose(m, n, l);
  27. return 0;
  28. }
  29. void arrClose(int m, int n, int **pInt) {
  30. for (int i = 0; i < m; ++i) {
  31. free(pInt[i]);
  32. }
  33. free(pInt);
  34. }
  35. int **arrInit(int m, int n) {
  36. int **l;
  37. l = (int **) malloc(m * sizeof(int *));
  38. for (int i = 0; i < m; i++) {
  39. l[i] = (int *) malloc(n * sizeof(int));
  40. for (int j = 0; j < n; ++j) {
  41. scanf("%d", &l[i][j]);
  42. }
  43. }
  44. return l;
  45. }