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.运行效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python从入门到精通:数据容器

数据容器介绍 一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 数据容器根据特点的不同&#xff0c;如&#xff1a; 是否支持重复元素 是否可以修改 是否有序&#xff0…

数据库根据日期统计SQL编写记录

统计每天产生多少数据 SELECT to_char("日期字段",YYYY-MM-dd) time ,count(*) FROM "表名" GROUP BY time;统计每月产生多少数据 SELECT to_char("日期字段",YYYY-MM) time ,count(*) FROM "表名" GROUP BY time;统计每年产生多少数…

【GitLab】使用 Docker 安装 GitLab 1:配置 SSH 端口

使用 Docker 安装 GitLab 要求修改ssh端口 GitLab 使用 SSH 通过 SSH 与 Git 交互。默认情况下,GitLab 使用端口22。 要在使用 GitLab Docker 映像时使用其他端口,您可以执行以下操作之一: 更改服务器的 SSH 端口(推荐)。 更改 GitLab Shell SSH 端口。 更改服务器的 SSH …

C++(week17): C++提高:(七)workflow

文章目录 一、Http协议二、Nginx1.概念2.nginx的安装和部署(1)安装nginx(2)使用nginx服务器部署静态资源 3.HTTP服务器架构(1)基于进程、基于线程&#xff1a;APache(2)事件驱动模型&#xff1a;Nginx(3)反向代理(4)负载均衡 三、workflow异步事件引擎 (异步回调模型)1.服务器底…

Qt找不到QSound头文件,头文件QSoundEffect

目录 Qt找不到QSound头文件 CMake qmke 可能版本不同更新&#xff0c; 找不到QSound头文件 Qt找不到QSound头文件 #include <QSound> CMake 可以看一下这篇来自网上的文章 CMake中添加Qt模块的合理方法 - wjbooks - 博客园 (cnblogs.com) qmke 打开.pro文件&am…

[linux#39][线程] 详解线程的概念

线程&#xff1a;是进程内的一个执行分支。线程的执行粒度比进程要细 什么是线程&#xff1f; • 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程 是“一个进程内部的控制序列” • 一切进程至少都有一个执行线程 • …

BF算法,KMP算法

前言&#xff1a;今天我们来学习两种算法&#xff0c;BF算法和KMP算法。相信会让许多小伙伴们打开新世界的大门。 1 BF算法 实践是检验真理的唯一标准。举一个例子说明BF算法。现在我们要在一个主串中找子串的位置。那我们该如何解决这个问题呢&#xff1f;最简单的办法自然是…

Repeat方法:取模运算教材与Unity控制台输出数值不同的原因

学习该知识点的参考教材&#xff1a;Unity API解析/陈宏泉编著.——北京&#xff1a;人民邮电出版社&#xff0c;2014.9 编辑脚本的环境&#xff1a;Visual Studio 2022 在学习该本教材的第五章Mathf类的内容&#xff0c;通过跟随教材上的代码了解不同UnityAPI的具体用法时&a…

【机器学习】线性回归与逻辑回归的极致解析:从数学理论到实战案例

文章目录 1. 引言Python 代码示例 2. 线性回归2.1 线性回归的基本概念线性回归的定义数学表达式及模型假设 2.2 线性回归的工作原理最小二乘法&#xff08;Ordinary Least Squares, OLS&#xff09;梯度下降法在线性回归中的应用多元线性回归与一元线性回归的区别与联系 2.3 线…

什么是AR、VR、MR、XR?

时代背景 近年来随着计算机图形学、显示技术等的发展&#xff0c;视觉虚拟化技术得到了广泛的发展&#xff0c;并且越来越普及化&#xff0c;慢慢的也走入人们的视野。目前市场上视觉虚拟化技术的主流分为这几种 VR、AR、MR、XR。这几项技术并不是最近才出现的&#xff0c;VR的…

机器学习笔记 第十二章计算学习理论

12.1 基础知识 计算学习理论就是关于机器学习的理论基础&#xff0c;其作用就是分析学习任务的困难实质&#xff0c;通过分析结果来知道算法设计&#xff0c;并为学习算法提供理论保证。 给定样例集&#xff0c;&#xff0c;假设为二分类问题&#xff0c;一般。假定中的所有样…

GoMail发送邮件的性能优化策略有哪些方法?

GoMail发送邮件如何配置服务器&#xff1f;GoMail发信功能如何&#xff1f; GoMail是一款广受欢迎的Go语言邮件发送库&#xff0c;具备高效、易用等优点&#xff0c;但在高并发场景下&#xff0c;GoMail发送邮件的性能优化显得尤为重要。AokSend将探讨几种有效的GoMail发送邮件…

PDF Shaper Ultimate v14.4 中文授权版

如今对PDF处理的软件很多都是只是单一的功能。PDF Shaper给你完全不同的体验&#xff0c;因为PDF Shaper是一款PDF工具集合的软件。有了PDF Shaper&#xff0c;你以后再也不用下载其他处理PDF的软件了。PDF Shaper的功能有&#xff1a;合并&#xff0c;分割&#xff0c;加密和解…

贪吃蛇(C语言详解)

贪吃蛇游戏运行画面-CSDN直播 目录 贪吃蛇游戏运行画面-CSDN直播 1. 实验目标 2. Win32 API介绍 2.1 Win32 API 2.2 控制台程序&#xff08;Console&#xff09; 2.3 控制台屏幕上的坐标COORD 2.4 GetStdHandle 2.5 GetConsoleCursorlnfo 2.5.1 CONSOLE_CURSOR_INFO …

ant design pro access.ts 是如何控制多角色的权限的

ant design pro 如何去保存颜色ant design pro v6 如何做好角色管理ant design 的 tree 如何作为角色中的权限选择之一ant design 的 tree 如何作为角色中的权限选择之二 看上面的图片&#xff0c;在前端中如何控制这些权限&#xff0c;比如控制按钮的显示&#xff0c;还有菜单…

【Linux操作系统】进程控制

目录 一、进程创建1.1 认识fork1.2 写时拷贝 二、进程终止2.1 进程退出2.2 函数退出2.3 exit 三、进程等待四、程序替换 一、进程创建 1.1 认识fork fork函数是系统调用接口&#xff0c;用来创建子进程的 根据进程的pid&#xff0c;可以看出父进程fork后分为父进程和子进程…

找到你的任务管理伙伴:待办事项软件终极指南

国内外主流的10款待办事项管理软件对比&#xff1a;PingCode、WorktileTodoist、TickTick、Teambition、 Microsoft To Do、. Asana、Tower、番茄ToDo、飞书。 在面对日益复杂的工作和个人任务时&#xff0c;找到一款能够有效帮助你管理日常待办事项的软件&#xff0c;变得越来…

[RCTF2015]EasySQL1

打开题目 点进去看看 注册个admin账户&#xff0c;登陆进去 一个个点开看&#xff0c;没发现flag 我们也可以由此得出结论&#xff0c;页面存在二次注入的漏洞&#xff0c;并可以大胆猜测修改密码的源代码 resoponse为invalid string的关键字是被过滤的关键字&#xff0c;Le…

blender内置树木的UV

之前听说用这个内置插件可以创建树木 我这边的默认配置出来的树木长这样&#xff0c;不得不想一下&#xff0c;他的uv怎么展&#xff0c;看起来好多树 我尝试看了一眼默认的UV 结果如下 好像每个树枝都已经是平铺的样子了&#xff0c;那么如果需要改的话&#xff0c;就根据…

大模型预训练与微调之间的关系

1. 引言 大语言模型的兴起与训练范式 在过去的十年中&#xff0c;随着计算能力和数据规模的显著提升&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;在自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;领域掀起了一场革命…