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
相关推荐
JuneXcy15 小时前
指针高级(1)
c语言·开发语言
DfromY18 小时前
【随手记】vscode中C语言满足K&R风格的方法
c语言·vscode
麦子邪18 小时前
C语言中奇技淫巧08-使用alloca/__builtin_alloca从栈上分配空间
c语言·开发语言
啊?啊?19 小时前
15 从动态分配到内存布局:C 语言动态内存函数用法 + 柔性数组实战 + C/C++ 内存分布图全梳理
c语言·柔性数组·动态内存·内存分布
l1t20 小时前
美团龙猫(longcat.AI)编写的利用二分查找优化Excel的sheet.xml指定范围输出C程序
xml·c语言·excel·解析器
悲伤小伞20 小时前
Linux_网络基础
linux·服务器·c语言·网络
欧阳x天21 小时前
顺序表相关练习题
c语言·数据结构·算法
宋一平工作室21 小时前
嵌入式人别再瞎折腾了!这8个开源项目,解决按键/队列/物联网所有痛点,小白也能抄作业
c语言·stm32·单片机·嵌入式硬件·物联网·开源
皆过客,揽星河1 天前
c语言程序之魂——算法(练习题,流程图,程序源码)
c语言·算法·流程图·源码·辗转相除法·c语言程序设计
ShineWinsu1 天前
对于牛客网—语言学习篇—编程初学者入门训练—复合类型:BC141 井字棋及BC142 扫雷题目的解析
c语言·练习·小游戏·扫雷·牛客网·五子棋·井字棋