10.10 将一个5×5的矩阵中最大的元素放在中心,4个角分别放在4个最小的元素(按从左到右,从上到下的顺序,依次从小到大存放),写一个函数实现之,并用main函数调用。

  1. #include <stdio.h>
  2.  
  3. int main(){
  4. void change(int * p);
  5. int num[5][5];
  6. int i,j,* p;
  7. p=&num[0][0];
  8. printf("请输入矩阵的值:\n");
  9. for(i=0; i<5; i++){
  10. for(j=0; j<5; j++){
  11. scanf("%d",&num[i][j]);
  12. }
  13. }
  14. //输出原来的矩阵
  15. printf("所输入的矩阵为:\n");
  16. for(i=0; i<5; i++){
  17. for(j=0; j<5; j++){
  18. printf("%3d",num[i][j]);
  19. }
  20. printf("\n");
  21. }
  22. //调用函数
  23. change(p);
  24. //输出调整后的矩阵
  25. printf("按要求调整后的矩阵为:\n");
  26. for(i=0; i<5; i++){
  27. for(j=0; j<5; j++){
  28. printf("%3d",num[i][j]);
  29. }
  30. printf("\n");
  31. }
  32. return 0;
  33. }
  34. void change(int * p){
  35. //printf("%d\n",p[3]);
  36. //找到最大值,并放到中间
  37. int i,j,t,* max=p;
  38. for(i=0; i<5; i++){
  39. for(j=0; j<5; j++){
  40. if(* max < * (p+i*5+j)) max=p+i*5+j;
  41. }
  42. }
  43. t=*(p+2*5+2);
  44. *(p+2*5+2)=*max;
  45. *max=t;
  46. int * min=p;
  47. //找到最小的值
  48. for(i=0; i<5; i++){
  49. for(j=0; j<5; j++){
  50. if(*min > * (p+i*5+j)){
  51. min=p+i*5+j;
  52. }
  53. }
  54. }
  55. //最小的值和第一个元素交换
  56. t=*min;
  57. *min=*p;
  58. *p=t;
  59. min=p+1;//从第二个元素开始
  60. //找到次小的值
  61. for(i=0; i<5; i++){
  62. for(j=0; j<5; j++){
  63. if(i==0 && j==0) continue;
  64. else if(*min > *(p+i*5+j)){
  65. min=p+i*5+j;
  66. }
  67. }
  68. }
  69. //次小的值和第5个元素交换
  70. t=*min;
  71. *min=*(p+4);
  72. *(p+4)=t;
  73. min=p+1;//从第二个元素开始
  74. //找到第三小的值
  75. for(i=0; i<5; i++){
  76. for(j=0; j<5; j++){
  77. if((i==0 && j==0) || (i==0 && j==4)) continue;
  78. else if(*min > *(p+i*5+j)){
  79. min=p+i*5+j;
  80. }
  81. }
  82. }
  83. //第三小的值和第21个元素交换
  84. t=*min;
  85. *min=*(p+20);
  86. *(p+20)=t;
  87. min=p+1;//从第二个元素开始
  88. //找到第四小的值
  89. for(i=0; i<5; i++){
  90. for(j=0; j<5; j++){
  91. if((i==0 && j==0) || (i==0 && j==4) || (i==4 && j==0)) continue;
  92. else if(*min > *(p+i*5+j)){
  93. min=p+i*5+j;
  94. }
  95. }
  96. }
  97. //第四小的值和第25个元素交换
  98. t=*min;
  99. *min=*(p+24);
  100. *(p+24)=t;
  101. }

 

结果:

版权声明:本文为Allen-win原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Allen-win/p/7273289.html