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
相关推荐
java干货3 小时前
如何让 iPhone 用上 Type-C 充电器?适配器模式详解
c语言·iphone·适配器模式
代码改善世界4 小时前
C语言项目实战:学生成绩管理系统(支持登录注册、随机考试、分数区间统计)
c语言·网络·课程设计
『往事』&白驹过隙;7 小时前
浅谈PC开发中的设计模式搬迁到ARM开发
linux·c语言·arm开发·设计模式·iot
Kurbaneli8 小时前
C语言过时了吗?2025年仍不可替代
c语言·开发语言
智者知已应修善业9 小时前
【PAT乙级真题解惑1012数字分类】2025-3-29
c语言·c++·经验分享·笔记·算法
v_for_van10 小时前
力扣刷题记录6(无算法背景,纯C语言)
c语言·算法·leetcode
爱编码的小八嘎10 小时前
第2章 认识CPU-2.3 32位微处理器(1)
c语言
BackCatK Chen10 小时前
第十五章 吃透C语言结构与数据形式:struct/union/typedef全解析
c语言·开发语言·数据结构·typedef·结构体·函数指针·联合体
『往事』&白驹过隙;11 小时前
C/C++中的格式化输出与输入snprintf&sscanf
linux·c语言·c++·笔记·学习·iot·系统调用
m0_5312371711 小时前
C语言-初始化赋值,函数,变量的作用域与生命周期
c语言·开发语言