C 练习实例68-数组循环移动m次

**题目:**有 n 个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。

思路:

  1. 先保存数组最后面的一个数
  2. 把最后那个数前面的所有数向后移动一位
  3. 最后,套入循环语句,循环m次,即移动m个位置

代码:

cpp 复制代码
#include <stdio.h>
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,10};
	int n=sizeof(a)/4;
	int *p=a;	//p指向数组第一个元素
	printf("数组里有%d个元素\n",n);
	printf("移动前的数组为:\n");
	for(p=a;p<a+n;p++){
		printf("%-4d",*p);
	}
	
	int m=3;	//移动3次
	for(int i=0;i<m;i++){
		p=a+n-1;	//p指向数组最后一个元素
		int temp;
		temp=*p;
		//把最后一位数前面的所有数,依次后移一位
		while(p>a){
			*p=*(p-1);
			p--;
		};
		*p=temp;
	}
	//输出数组
	printf("\n移动后的数组为:\n");
	for(p=a;p<a+n;p++){
		printf("%-4d",*p);
	}
	
	return 0;
}

运行:

bash 复制代码
数组里有10个元素
移动前的数组为:
1   2   3   4   5   6   7   8   9   10
移动后的数组为:
8   9   10  1   2   3   4   5   6   7
相关推荐
薛慕昭5 小时前
嵌入式 C 语言猜大小游戏设计与实现
c语言·游戏
月光技术杂谈6 小时前
实战:C驱动框架嵌入Rust模块的互操作机制与完整流程
c语言·开发语言·rust·ffi·跨语言·bindgen·互操作
合作小小程序员小小店6 小时前
游戏开发,桌面%小游戏,贪吃蛇%demo,基于vs2022,c语言,easyX,无数据库
c语言·开发语言
WongKyunban10 小时前
Linux中的线程是什么?
c语言
LaoZhangGong12311 小时前
以太网HTTP数据包格式分析
c语言·stm32·网络协议·http·tcp·arp
lingggggaaaa13 小时前
免杀对抗——C2远控篇&PowerShell&有无文件落地&C#参数调用&绕AMSI&ETW&去混淆特征
c语言·开发语言·笔记·学习·安全·microsoft·c#
口袋物联13 小时前
设计模式之建造者模式在 C 语言中的应用(含 Linux 内核实例)
c语言·设计模式·建造者模式
切糕师学AI14 小时前
位带操作(Bit-Banding)是什么?
c语言·arm·嵌入式开发·cortex-m·位带操作
学习路上_write14 小时前
嵌入式系统bringup指南:软硬件调试
c语言·单片机·嵌入式硬件
say_fall14 小时前
C语言编程实战:每日一题 - day7
c语言·开发语言