网络语言系列&C语言系列【仅供参考-推荐】:C语言:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。

C语言:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。要求用指针处理问题!




C语言:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。要求用指针处理问题!

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

#include <stdio.h>
int main()
{void change(int *p);
 int a[5][5],*p,i,j;
 printf("input matrix:\n");
 for (i=0;i<5;i++)
   for (j=0;j<5;j++)
     scanf("%d",&a[i][j]);
 p=&a[0][0];
 change(p);
 printf("Now,matrix:\n");
 for (i=0;i<5;i++)
  {for (j=0;j<5;j++)
     printf("%d ",a[i][j]);
   printf("\n");
  }
 return 0;
}
 
void change(int *p)          //交换函数
 {int i,j,temp;
  int *pmax,*pmin;
  pmax=p;
  pmin=p;
  for (i=0;i<5;i++)          //找最大值和最小值的地址,并赋给 pmax,pmin
    for (j=i;j<5;j++)
     {if (*pmax<*(p+5*i+j)) pmax=p+5*i+j;
      if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
     }
  temp=*(p+12);              //将最大值与中心元素互换
  *(p+12)=*pmax;
  *pmax=temp;
 
  temp=*p;                   //将最小值与左上角元素互换
  *p=*pmin;
  *pmin=temp;
 
  pmin=p+1;            
                         //将a[0][1]的地址赋给pmin,从该位置开始找最小的元素
  for (i=0;i<5;i++)         //找第二最小值的地址赋给 pmin 
    for (j=0;j<5;j++)
	{if(i==0 && j==0) continue;
     if  (*pmin > *(p+5*i+j)) pmin=p+5*i+j;
	}
  temp=*pmin;               //将第二最小值与右上角元素互换 
  *pmin=*(p+4);
  *(p+4)=temp;
 
  pmin=p+1;
  for (i=0;i<5;i++)        //找第三最小值的地址赋给pmin 
    for (j=0;j<5;j++)
	{if((i==0  && j==0) ||(i==0  && j==4)) continue;
	 if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
	}
  temp=*pmin;              // 将第三最小值与左下角元素互换
  *pmin=*(p+20);
  *(p+20)=temp;
 
  pmin=p+1;
  for (i=0;i<5;i++)       // 找第四最小值的地址赋给pmin 
     for (j=0;j<5;j++)
	 {if ((i==0  && j==0) ||(i==0  && j==4)||(i==4  && j==0)) continue;
	  if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
	 }
  temp=*pmin;             //将第四最小值与右下角元素互换
  *pmin=*(p+24);
  *(p+24)=temp;
 }

运行结果:

在这里插入图片描述







碎月拾梦

C语言:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。要求用指针处理问题!

要在C语言实现这个功能,你可以创建一个函数,接收一个二维数组(实际上是一个维数组的层视图)作为参数,并利用指针遍历数组。这里是一个简单的示例代码: ```c #include <stdio.h> #define ROWS 5 // 矩阵行数 #define COLS 5 // 矩阵列数 // 函数声明,接收指向二维数组的指针和行、列大小 void rearrange_matrix(int (*matrix)[COLS], int rows, int cols); // 动态找到最小最大元素及其索引 int find_min_max(int *arr, int size, int *min_index, int *max_index) { int min_val = arr[0]; int max_val = arr[0]; *min_index = 0; *max_index = 0; for (int i = 1; i < size; ++i) { if (arr[i] < min_val) { min_val = arr[i]; *min_index = i; } if (arr[i] > max_val) { max_val = arr[i]; *max_index = i; } } return max_val, min_val; } // 主函数,演示如何调用上述函数 int main() { int matrix[ROWS][COLS] = { ... }; // 填充你的5x5矩阵 int row, col; rearrange_matrix(matrix, ROWS, COLS); // 打印结果 for (row = 0; row < ROWS; row++) { for (col = 0; col < COLS; col++) { printf("%d ", matrix[row][col]); } printf("\n"); } return 0; } // 实现函数,调整矩阵元素 void rearrange_matrix(int (*matrix)[COLS], int rows, int cols) { int center = rows / 2, middle = cols / 2; int min1, min2, min3, min4, max, min, min_index1, min_index2, min_index3, min_index4, max_index; max, min = find_min_max(matrix[center], 1, &max_index, &min_index1); // 中心最大值和其索引 matrix[center][middle] = min; // 最小放在中心 min1, min2 = find_min_max(&matrix[center][0], middle, &min_index2, &min_index3); min3, min4 = find_min_max(&matrix[center][middle+1], middle, &min_index4, NULL); // 两个落的最小值 matrix[min_index1][max_index] = min1; matrix[min_index2][0] = min2; matrix[min_index3][middle-1] = min3; matrix[min_index4][middle+1] = min4; // 其他位置保持不变 } ``` 注意,这个代码假设输入矩阵已经填充完毕。实际使用时,你需要提供一个完整的5x5矩阵。同时,这个例子只处理了偶数维度的情况,如果矩阵是奇数维度,边缘区域需要稍作修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值