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
相关推荐
序属秋秋秋1 小时前
《Linux系统编程之进程基础》【进程优先级】
linux·运维·c语言·c++·笔记·进程·优先级
小曹要微笑11 小时前
STM32各系列时钟树详解
c语言·stm32·单片机·嵌入式硬件·算法
inputA11 小时前
【LwIP源码学习8】netbuf源码分析
android·c语言·笔记·嵌入式硬件·学习
我不会插花弄玉14 小时前
排序【由浅入深-数据结构】
c语言·数据结构
No0d1es16 小时前
电子学会青少年软件编程(C/C++)六级等级考试真题试卷(2025年9月)
c语言·c++·算法·青少年编程·图形化编程·六级
Knox_Lai16 小时前
数据结构与算法学习(0)-常见数据结构和算法
c语言·数据结构·学习·算法
逐步前行16 小时前
C项目--羊了个羊(两关全)--含源码
c语言·开发语言
赖small强18 小时前
【Linux C/C++开发】第10周:STL容器 - 理论与实战
linux·c语言·c++·stl容器
q***581918 小时前
在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(2)
c语言·开发语言
时间醉酒19 小时前
数据结构:栈详解-从原理到实现(顺序栈与链式栈)
c语言·数据结构·c++·算法·链表