当前位置: 首页 > news >正文

C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。

1.题目要求:

将一个5X5的矩阵中最大的元素放在中心·,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。

2.数组法实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//一、数组法实现
int main()
{int arr[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};void sort(int (*arr)[5],int row,int col);sort(arr,5,5);int i, j;for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){printf("%5d", arr[i][j]);}printf("\n");}return 0;
}
void sort(int arr[][5],int row,int col)
{//1.找到最大值放到中间int* mid = &arr[row / 2][col / 2];int* max = mid;for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (*max < arr[i][j]){max = &arr[i][j];}}}int temp = *max; *max = *mid; *mid = temp;//2.分别找到四个最小值,放到四个角int* corner[4] = { &arr[0][0],&arr[0][col - 1],&arr[row - 1][0],&arr[row - 1][col - 1] };for (int i = 0; i < 4; i++){int* min = mid;//这时候mid位置就是最大值位置for (int m = 0; m < row; m++){for (int n = 0; n < col; n++){int k = 0;for (k = 0; k < i; k++)//找到第0个最小数的时候,i是0,意味着没有角落被置换,找到第1个最小值,i是1{if (&arr[m][n] == corner[k]) {//这就是被置换完毕的角落的位置break;}}if (k != i)continue;//k不等于i就意味着上面的for循环break出来了,此时该位置就是被置换的角落,应该避免该位置if (*min > arr[m][n])//第m行n列的数据,比min位置的数据小,则让min指向新位置{min = &arr[m][n];}}}int temp = *min; *min = *corner[i]; *corner[i] = temp;}
}	

3.指针法实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//二、指针法实现
int main()
{int arr[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};void sort(int (*arr)[5],int row,int col);sort(arr,5,5);int i, j;for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){printf("%5d", arr[i][j]);}printf("\n");}return 0;
}
二、指针法实现
void sort(int (*arr)[5], int row, int col)
{//1.找到最大值放到中间int* mid = *(arr + row / 2) + col / 2;int* max = mid;for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (*max < *(*(arr+i)+j)){max = *(arr+i)+j;}}}int temp = *max; *max = *mid; *mid = temp;//2.分别找到四个最小值,放到四个角int* corner[4] = { *arr,*arr + col - 1,*(arr + row - 1),*(arr + row - 1) + col - 1 };for (int i = 0; i < 4; i++){int* min = mid;//这时候mid位置就是最大值位置for (int m = 0; m < row; m++){for (int n = 0; n < col; n++){int k = 0;for (k = 0; k < i; k++)//找到第0个最小数的时候,i是0,意味着没有角落被置换,找到第1个最小值,i是1{if (*(arr+m)+n == corner[k]) {//这就是被置换完毕的角落的位置break;}}if (k != i)continue;//k不等于i就意味着上面的for循环break出来了,此时该位置就是被置换的角落,应该避免该位置if (*min > *(*(arr+m)+n))//第m行n列的数据,比min位置的数据小,则让min指向新位置{min = *(arr+m)+n;}}}int temp = *min; *min = *corner[i]; *corner[i] = temp;}
}

4.运行效果:

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java垃圾收集器工作原理
  • Docker三剑客之Docker Engine
  • 深入理解 Kibana 配置文件:一份详尽的指南
  • MySQL表的增删改查(基础)
  • Leetcode 70.爬楼梯
  • 使用 Python 解密加密的 PDF 文件
  • [高频sql50题]第1731题,每位经理的下属员工数量
  • 【C语言篇】数组和函数的实践:扫雷游戏(附源码)
  • 抽卡机小程序,开启全新拆卡乐趣
  • 基于Python的金融数据采集与分析的设计与实现
  • 【银河麒麟高级服务器操作系统】实际案例分析,xfsaild占用过高
  • Chapter 8 事件组
  • gitlab修改默认访问端口
  • 简单的class.getResource与classLoader.getResource区别
  • 【Golang】go mod的使用
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android 架构优化~MVP 架构改造
  • Java|序列化异常StreamCorruptedException的解决方法
  • js操作时间(持续更新)
  • KMP算法及优化
  • Sass Day-01
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vim 折腾记
  • webpack项目中使用grunt监听文件变动自动打包编译
  • WebSocket使用
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 后端_MYSQL
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 蓝海存储开关机注意事项总结
  • 两列自适应布局方案整理
  • 面试总结JavaScript篇
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 批量截取pdf文件
  • 入门到放弃node系列之Hello Word篇
  • 实现简单的正则表达式引擎
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 怎么把视频里的音乐提取出来
  • puppet连载22:define用法
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​学习一下,什么是预包装食品?​
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (独孤九剑)--文件系统
  • (二)斐波那契Fabonacci函数
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (一)Dubbo快速入门、介绍、使用
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)可以带来幸福的一本书
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET DataGridView数据绑定说明
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复