二维数组调整

前言

NWAFU 2021阶段二 B


一、题目描述

题目描述

编写Adjust_Arr函数,对动态二维数组中的每一行做数据位置调整。将偶数行(行号从0开始,并计作偶数行)中最大元素与最前一个元素做交换,最小元素与最后一个元素做交换,使偶数行中最大元素在最前,最小元素在最后;将奇数行中最小元素与最前一个元素做交换,最大元素与最后一个元素做交换,使奇数行中最小元素在最前,最大元素在最后。
Adjust_Arr函数规定原型如下:
    void Adjust_Arr(int **p, int m, int n);
其中,p为动态二维数组的首地址,m为动态二维数组的行数,n为动态二维数组的列数
可调用Find_Min()和Find_max()在一行数据中查找最小值和最大值所在位置,这两个函数的原型分别为:
    int Find_Min(int *q, int n);
    int Find_Max(int *q, int n);
其中q为指向一维整型数组的指针,n为这一行整数的个数。两个函数分别返回最小数和最大数在该行中的位置索引。当一行中存在多个最大数(或最小数)时,以下标最小的元素作为最大数(或最小数)。
从此处可用wget命令取得下述代码。注意提交时,只提交Adjust_Arr()及其调用的除Find_Min()和Find_Max()之外的函数代码

#include <stdio.h>
#include <stdlib.h>int Find_Min(int *, int n);
int Find_Max(int *, int n);
void Adjust_Arr(int **, int, int);
void Swap(int *, int, int (*)(int *, int), int (*)(int *, int));int main()
{int m = 0, n = 0;int **arr;int i=0,j=0;scanf("%d%d",&m, &n);arr=(int **)malloc(m*sizeof(int*));if(arr == NULL){printf("Insufficient Memory!\n");exit(1);}for(i=0; i<m; i++){arr[i]=(int *)malloc(n*sizeof(int));if(arr[i] == NULL){printf("Insufficient Memory!\n");exit(1);}}for(i=0; i<m; i++){for(j=0; j<n; j++){scanf("%d",&arr[i][j]);}}Adjust_Arr(arr, m, n);for(i=0; i<m; i++){for(j=0; j<n-1; j++){printf("%d ",arr[i][j]);}printf("%d\n",arr[i][j]);
}for(i=0; i<m; i++){free(arr[i]);}free(arr);return 0;
}int Find_Max(int *a, int n)
{int i = 0;int Max = 0;for(i = 1; i < n; i++){if(a[i] > a[Max]){Max= i;}}return Max;
}
int Find_Min(int *a, int n)
{int i = 0;int Min = 0;for(i = 1; i < n; i++){if(a[i] < a[Min]){Min = i;}}return Min;
}
输入

二维数组的行m和列n,然后输入m*n个整数

输出

排序后的数组m*n个整数

样例输入
3 4
2 19 3 8
14 12 7 13
2 10 11 3
样例输出
19 8 3 2
7 12 13 14
11 10 3 2

二、设计步骤

考察函数指针。 

代码实现:

void Adjust_Arr(int **, int, int);
void Swap(int *, int, int (*)(int *, int), int (*)(int *, int));
void my_Swap(int *,int *);void Adjust_Arr(int **p, int m, int n)
{int i,j;for(i = 0;i < m;i += 2){Swap(p[i],n,Find_Max,Find_Min);}for(i = 1;i < m;i += 2){Swap(p[i],n,Find_Min,Find_Max);}
}void Swap(int *p, int n, int (*fa)(int *, int), int (*fb)(int *, int))
{int temp;int first = fa(p,n);my_Swap(&p[first],&p[0]);int last = fb(p,n);my_Swap(&p[last],&p[n-1]);
}void my_Swap(int *x,int *y)
{int temp = *x;*x = *y;*y = temp;
}

总结

NWAFU 2021阶段二 B

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

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

相关文章

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

数据挖掘 K-Means聚类

未格式化之前的代码&#xff1a; import pandas as pd#数据处理 from matplotlib import pyplot as plt#绘图 from sklearn.preprocessing import MinMaxScaler#归一化 from sklearn.cluster import KMeans#聚类 import os#处理文件os.environ["OMP_NUM_THREADS"] …

排序笔记总结

插入排序 直接插入排序 前i个元素是有序的&#xff0c;将第i1个元素逐个往前比较&#xff0c;比到比一个数大的就插入到这个数后面&#xff0c;即这个数后面的数到i个数全部往后移 例&#xff1a;DS内排—直插排序 题目描述 给定一组数据&#xff0c;使用直插排序完成数据的…

常用的测试工具有10类

常用的测试工具有10类&#xff1a; 1.测试管理工具 2.接口测试工具 3.性能测试工具 4.C/S自动化工具 5.白盒测试工具 6.代码扫描工具 7.持续集成工具 8.网络测试工具 9.app自动化工具 10.web安全测试工具 1.测试管理工具 1&#xff0c;TestDirector(大而全) 2&…

解释RestFUL API,以及如何使用它构建web程序

RESTful API&#xff08;Representational State Transfer&#xff09;是一种基于网络的软件架构风格&#xff0c;用于构建分布式系统。它利用 HTTP 协议中的各种方法&#xff08;如 GET、POST、PUT、DELETE&#xff09;来对资源进行操作&#xff0c;使得不同应用程序能够相互通…

git删除之前上传的

之前文件上传到github上了&#xff0c;但是现在又想要把它删除但是没有找到方法&#xff0c;在网上搜索了很久才找到个有用的。 删除文件 git rm filename git commit -m "删除"但是这时候git push发现没有效果。 之后还要&#xff1a; 清除缓存&#xff1a; gi…

设计模式-多例模式

设计模式专栏 模式介绍多例模式和单例模式的区别应用场景Spring中多例模式的优缺点代码示例Java实现多例模式Python实现多例模式 多例模式在spring中的应用 模式介绍 多例模式是一种创建型设计模式&#xff0c;属于对象创建类型。多例模式的特点是允许一个类有多个实例&#x…

西北大学844计算机类考研-25级初试高分总攻略

西北大学844计算机类考研-25级初试高分攻略 个人介绍 ​ 本人是西北大学22级软件工程研究生&#xff0c;考研专业课129分&#xff0c;过去一年里在各大辅导机构任职&#xff0c;辅导考研学生专业课844&#xff0c;辅导总时长达400小时&#xff0c;辅导学生超过20余人&#xf…

Android集成OpenSSL实现加解密-集成

导入so 将编译生成的 OpenSSL 动态库文件&#xff08;.so 文件&#xff09;复制到你的 Android 项目的 libs 目录中 导入头文件 将编译生成的include文件夹导入到项目中 build.gradle添加配置 defaultConfig {……testInstrumentationRunner "androidx.test.runner…

java对象整理

1.对象的创建过程 首先class文件加载到内存中 这个过程如下 “加载”是“类加载”(Class Loading)过程的第一步。这个加载过程主要就是靠类加载器实现的&#xff0c; 包括用户自定义类加载器。 加载到内存后做的事情 申请对象内存 成员变量赋默认值 调用构造方法 成员变量顺序…

前端实现断点续传文件

公司要求实现的功能&#xff0c;大概思路是将上传的文件通过jsZip压缩后&#xff0c;进行切片&#xff0c;留一下总切片&#xff0c;当前片&#xff0c;并把这些数据给后端&#xff0c;至于前端的校验&#xff0c;是由Md5完成的&#xff0c;验证文件唯一性&#xff0c;这样下次…

什么是受检异常和非受检异常 一、首先是异常的本质 二、然后是对受检异常和非受检异常的定义 三、最后我还可以说下他们优点和缺点) 受检异常优点有两个:

文章目录 什么是受检异常和非受检异常一、首先是异常的本质二、然后是对受检异常和非受检异常的定义三、最后我还可以说下他们优点和缺点&#xff09; 受检异常优点有两个&#xff1a; 什么是受检异常和非受检异常 可以从三个方面回答这个问题一、首先是异常的本质&#xff09…

V-rep(CoppeliaSim)添加相机,与python联合仿真,并使用python读取V-rep中的RGB图与深度图

目录 前言在V-rep中构建场景建立python与V-rep通信 前言 本文主要介绍了如何使用python与V-rep联合仿真&#xff0c;并用OpenCV可视化V-rep中视觉传感器所能看到的 RGB图和深度图&#xff0c;效果图如下。 在V-rep中构建场景 本文使用的V-rep版本是3.5&#xff1a; 打开V-…

react使用useState更新数组失败

失败案例&#xff1a; const [addBox, setAddBox] useState([])const itemAdd (item) >{addBox.push(item);setAddBox(addBox)console.log(addBox,点击添加按钮)} 原因&#xff1a;react的useState hook监听的是浅监听 在 React 中&#xff0c;使用 useState Hook 来更新…

junit.Test 的使用方法

在 Maven 项目中使用 JUnit&#xff0c;你需要在项目的 pom.xml 文件中添加 JUnit 依赖。然后&#xff0c;你可以创建测试类&#xff0c;并在测试类中使用 Test 注解标识测试方法。 文章目录 基本使用其他注解Before 和 AfterBeforeClass 和 AfterClassIgnoreRunWith参数化测试…

C#判断骨龄与生活年龄的比较

什么是骨龄 骨龄是骨骼年龄的简称&#xff0c;它能体现人体生长发育程度。随着生长发育&#xff0c;不同年龄段的骨骺发育成熟度不一样而出现不同的影像特征&#xff0c;是骨龄检测的理论基础。手指腕掌具有20多块骨骼&#xff0c;在各个年龄段具有不同的特点&#xff0c;因而…

009:vue结合el-table实现表格行拖拽排序(基于sortablejs)

文章目录 1. 实现效果2. 安装 sortablejs 插件3. 完整组件代码4. 注意点 1. 实现效果 2. 安装 sortablejs 插件 sortablejs 更多用法 cnpm i --save sortablejs3. 完整组件代码 <template><div class"home"><div class"body"><el-ta…

MongoDB 面试题

MongoDB 面试题 1. 什么是MongoDB&#xff1f; MongoDB是一种非关系型数据库&#xff0c;被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活&#xff0c;支持动态查询和索引&#xff0c;也支持BSON格式的数据存储&#xff0c;这…

catboost回归自动调参

import os import time import optuna import pandas as pd from catboost import CatBoostRegressor from sklearn.metrics import r2_score, mean_squared_error from sklearn.model_selection import train_test_split X_train data.drop([‘label’, ‘b1’, ‘b2’], a…

探究公有云中的巨人:深入分析大数据产品的架构设计

目录 一、服务器分类 二、公有云基础和产品 网络 vpc专有网络 弹性公网IP(Elastic IP)