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

#include<stdio.h>
void change(int *p){
   int i,j,temp;
   int *pmax,*pmin;
   
   // 初始化最大值和最小值的指针
   pmax=p;
   pmin=p;
   
   // 遍历矩阵,寻找最大和最小值
   for(i=0;i<5;i++)
       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;
   
   // 第二次遍历,寻找次小值并放置到特定位置
   for(i=0;i<5;i++)
       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++)
        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++)
        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;
}

/**
 * 主函数,用于输入矩阵数据并调用change函数进行排序,最后输出排序后的矩阵。
 */
int main(){
    int a[5][5],*p,i,j;
    printf("请输入矩形:");
    // 输入矩阵元素
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            scanf("%d",&a[i][j]);
    
    p=&a[0][0]; // 获取矩阵的首地址
    change(p); // 调用排序函数
    
    printf("排序后:");
    // 输出排序后的矩阵
    for(i=0;i<5;i++){
        for(j=0;j<5;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    return 0;
}
 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 23:28:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 23:28:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 23:28:07       82 阅读
  4. Python语言-面向对象

    2024-04-24 23:28:07       91 阅读

热门阅读

  1. C语言oj题

    2024-04-24 23:28:07       28 阅读
  2. Sql多表查询

    2024-04-24 23:28:07       37 阅读
  3. 消息队列的简介

    2024-04-24 23:28:07       32 阅读
  4. 解耦、异步、削峰是什么

    2024-04-24 23:28:07       32 阅读
  5. 前端 -- if-else嵌套地狱

    2024-04-24 23:28:07       31 阅读
  6. class090 贪心经典题目专题2【左程云算法】

    2024-04-24 23:28:07       31 阅读
  7. 最短路问题之Dijkstra算法 洛谷 单源最短路径

    2024-04-24 23:28:07       37 阅读
  8. 上海计算机学会4月月赛 丙组题解

    2024-04-24 23:28:07       32 阅读
  9. MySQL的MVCC机制

    2024-04-24 23:28:07       38 阅读