• 写一个函数实现:将一个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;
    }
     

  • 相关阅读:
    深入探究序列化与反序列化:原理、应用和最佳实践
    Python requests模块 multipart/form-data类型文件上传
    来聊聊音视频
    Pytorch:使用data_prefetcher提升数据读取速度【自动将训练数据移动到GPU】
    Jmeter连接Mysql数据库
    有道翻译调用
    解决can‘t open camera by index
    银行分布式存储基础设施创新实践分享
    环氧聚醚接枝胺化聚苯乙烯微球/AM型聚苯乙烯微球氧氟沙星聚合物的制备
    数据链路层
  • 原文地址:https://blog.csdn.net/m0_65061804/article/details/138043576