【C语言经典100例题-68】有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

方法一

        将原数组拆成两部分,前面n-m个数和后面m个数。首先将前面n-m个数逆序,然后将后面的m个数逆序。最后将整个数组逆序即可。

#include <stdio.h>void reverse(int arr[], int start, int end)
{for (int i = start, j = end; i <= (start + end) / 2; i++, j--){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}void rotate(int arr[], int n, int m)
{reverse(arr, 0, n - m - 1); // reverse first n-m elementsreverse(arr, n - m, n - 1); // reverse last m elementsreverse(arr, 0, n - 1); // reverse the whole array
}int main()
{int n, m;printf("请输入整数的个数n和向后移动的位置m:\n");scanf_s("%d %d", &n, &m);int arr[] = { 0 };printf("请输入%d个整数:\n", n);for (int i = 0; i < n; i++) {scanf_s("%d", &arr[i]);}rotate(arr, n, m);printf("反转后的数组为: \n");for (int i = 0; i < n; i++)printf("%d ", arr[i]);return 0;
}

        首先定义了一个 reverse 函数,用来逆序数组的一部分,它的参数为数组,起始下标和结束下标。

        然后定义了一个 rotate 函数,用来旋转数组。它的参数为数组、数组的长度和旋转的数量。该函数先将前面的 n-m 个元素逆序,然后将后面的 m 个元素逆序。最后将整个数组逆序。

        在 main 函数中,定义了一个整数数组 arr,并将其长度和旋转数量分别设置为 7 和 2。然后调用 rotate 函数对数组进行旋转。最后打印出旋转后的数组。

方法二 

        函数shift接受一个整型数组arr、数组长度n和向后移动的位置m,先将后面的m个数保存到临时数组temp中,然后将前面n-m个数向后移动m个位置,最后将临时数组temp中的m个数放到数组arr的前面。main函数中读入整数个数和数组元素,并调用shift函数移动数组。 

#include <stdio.h>void shift(int arr[], int n, int m) {int temp[m];for (int i = n - m; i < n; i++) {temp[i - n + m] = arr[i];}for (int i = n - m - 1; i >= 0; i--) {arr[i + m] = arr[i];}for (int i = 0; i < m; i++) {arr[i] = temp[i];}
}int main() {int n, m;printf("请输入整数个数n和向后移动的位置m:");scanf("%d%d", &n, &m);int arr[n];printf("请输入%d个整数:", n);for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}shift(arr, n, m);printf("移动后的数组为:");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}

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

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

相关文章

CharacterEncodingFilter的用法

CharacterEncoding是SpringMVC提供的一个一个过滤器,用于设置请求和响应的字符编码,解决乱码问题,他本身是一个过滤器 那么在SpringBoot中,CharacterEncoding就有一个很好的秒用 setEncoding("UTF-8")设置编码 setForceEncoding(true) 设置请求和响应编码 还需要在配…

用向量数据库Milvus Cloud搭建检索知识库机器人

检索知识库 Milvus 中已经存储了文本块向量,现在可以进行向量查询了。 以下函数创建了 1 个查询 pipeline。注意,这是本教程中最为关键的一个步骤! ops.ann_search.osschat_milvus(host=MILVUS_HOST, port=MILVUS_PORT, **{metric_type: IP, limit: 3, output_fields: [text…

Kafka日志索引详解以及生产常见问题分析与总结

文章目录 1、Kafka的Log日志梳理1.1、Topic下的消息是如何存储的&#xff1f;1.1.1、 log文件追加记录所有消息1.1.2、 index和timeindex加速读取log消息日志。 1.2、文件清理机制1.2.1、如何判断哪些日志文件过期了1.2.2、过期的日志文件如何处理 1.3、Kafka的文件高效读写机制…

数据结构—栈、队列、链表

一、栈 Stack&#xff08;存取O(1)&#xff09; 先进后出&#xff0c;进去123&#xff0c;出来321。 基于数组&#xff1a;最后一位为栈尾&#xff0c;用于取操作。 基于链表&#xff1a;第一位为栈尾&#xff0c;用于取操作。 1.1、数组栈 /*** 基于数组实现的顺序栈&#…

【记录】IDA|IDA怎么查看当前二进制文件自动分析出来的内存分布情况(内存范围和读写性)

IDA版本&#xff1a;7.6 背景&#xff1a;我之前一直是直接看Text View里面的地址的首尾地址来判断内存分布情况的&#xff0c;似乎是有点不准确&#xff0c;然后才想到IDA肯定自带查看内存分布情况的功能&#xff0c;而且很简单。 可以通过View-Toolbars-Segments&#xff0c…

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展&#xff0c;苹果应用市场的火爆&#xff0c;越来越多的开发者加入到苹果应用开发行业中来。同时&#xff0c;苹果应用市场上的应用也在不断增多&#xff0c;用户数量也在不断增加&#xff0c;苹果应用代签是指通过第三方公司为开发者的应用进行…

【Redis】五大数据类型 、历史概述、nosql分类

文章目录 NoSql概述NoSql年代缓存 Memcached MySQL垂直拆分&#xff08;读写分离&#xff09;分库分表水平拆分Mysql集群最近为什么要用 NoSqlNoSql的四大分类 Redis测试性能 五大数据类型keyStringSetHashZset 前言&#xff1a;本文为看狂神视频记录的笔记 NoSql概述 NoSql年…

Arcgis快速计算NDVI

Arcgis快速计算NDVI 一、问题描述 如何使用Arcgis像ENVI一样波段计算NDVI的值&#xff0c;事实上&#xff0c;Arcgis更快速一些。 二、操作步骤 首先准备好影像 打开窗口-影像分析 点击左上角 点击确定 &#xff08;发现自己使用的遥感影像不对劲&#xff0c;是计算好了…

c++的io流

文章目录 1.C语言的输入和输出2.流失是什么3.cIO流3.1c标准io流3.2c文件io流 4.stringstream的简单介绍 1.C语言的输入和输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()&#xff0c;scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中…

Arcgis提取玉米种植地分布,并以此为掩膜提取遥感影像

Arcgis提取玉米种植地分布上&#xff0c;并以此为掩膜提取遥感影像 一、问题描述 因为之前反演是整个研究区&#xff0c;然而土地利用类型有很多类&#xff0c;只在农田或者植被上进行反演&#xff0c;需要去除水体、建筑等其他类型&#xff0c;如何处理得到下图中只有耕地类…

raw图片处理软件:DxO PhotoLab 6 mac中文版支持相机格式

DxO PhotoLab 6 mac是一款专业的RAW图片处理软件&#xff0c;适用于Mac操作系统。它具有先进的图像处理技术和直观易用的界面&#xff0c;可帮助用户轻松地将RAW格式的照片转换为高质量的JPEG或TIFF图像。 DxO PhotoLab 6支持多种相机品牌的RAW格式&#xff0c;包括佳能、尼康、…

MySQL 性能优化

MySQL 性能优化 数据库命名规范 所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用 MySQL 保留关键字&#xff08;如果表名中包含关键字查询时&#xff0c;需要将其用单引号括起来&#xff09;数据库对象的命名要能做到见名识意&#xff0c;并且最…