码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 写一个函数实现:将一个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;
    }
     

  • 相关阅读:
    unity UnityWebRequest application/x-www-form-urlencoded上传字符对
    解决线上服务器CPU占用过高问题
    程序员必读书籍有哪些值得推荐?
    广州穗雅医院健康汇:为什么口腔溃疡会反反复复?
    纳米软件自动电源测试系统如何助力电源模块启动延迟和上升/下降时间测试?
    【附源码】计算机毕业设计SSM特种设备学习考试系统学习子系统的开发
    【算法基础】一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、希尔排序和堆排序
    第十九届全国环境友好科技竞赛(绿色创业类)正式启动
    关于<? extends Class>和<T extends Class>的区别
    基于51单片机16路多路抢答竞答器系统
  • 原文地址:https://blog.csdn.net/m0_65061804/article/details/138043576
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号